###前提・実現したいこと
最近 Java を学び始め、Java8 では多くのループ構造を Stream API で実装可能であり、またこれからは可能な限りそうするべきとも伺いました。
私としても可能な限りの Stream の活用を心掛けたく思うのですが、2つの配列の同インデックス同士を演算していくような for ループの Stream での上手い書き方を思いつけずにおります。
下記のような for ループを上手く Stream 化する方法にお知恵をお貸しいただけましたら幸いです。
###該当のソースコード
Java
1public static void main(String[] args) { 2 3 // main の引数から配列のサイズを指定 4 int limit = Integer.parseInt(args[0]); 5 6 // 1 ずつインクリメントする int 配列を作成。 limit が 5 なら {1, 2, 3, 4, 5} 7 int[] arr1 = Stream.iterate(1, i -> i + 1).limit(limit).mapToInt(Integer::intValue).toArray(); 8 9 // 1 から 10 倍していく int 配列を作成。 limit が 5 なら {1, 10, 100, 1000, 10000} 10 int[] arr2 =Stream.iterate(1, i -> i * 10).limit(limit).mapToInt(Integer::intValue).toArray(); 11 12// 配列 arr1, arr2 は for ループ内の動きを模式的に表すためのサンプルとなります。 13//説明の足りませんでした点を補いますと、任意の値を内容に持つ2つの配列で 14//同インデックス同士を対応させていくようなループ処理を模索しております。 15 16 // arr1 の各要素に arr2 の対応インデックスを掛け合わせていく、このような for ループを Stream 化したい 17 for(int i =0; i < arr1.length; i++){ 18 arr1[i] *= arr2[i]; 19 System.out.println(arr1[i]); // 1, 20, 300, 4000, 50000 20 } 21 22 // Arrays.stream(arr1).map(arr -> ...? 23}
###試したこと
Arrays.stream(arr1).map(arr -> ...?
から map メソッドを用いて実装していくべきかと思いましたが、インデックス同士の対応をどのように書いていくべきか思いつけずにおります。
よい書き方ございましたら、ご助言よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/05 11:09