1. ホーム

[解決済み】Java 8 ストリームと配列の操作

2022-04-11 04:45:30

質問

私はちょうどJava 8の新しいストリーム機能を発見したところです。Pythonから来た私は、2つの配列の合計や乗算のような配列に対する操作を、quot;1行のpythonic"方法で行うためのきちんとした方法があるのかと思っていましたか?

ありがとうございます。

解決方法は?

に新しいメソッドが追加されています。 java.util.Arrays を使用して、配列を Java 8 ストリームに変換し、それを合計などに使用することができます。

int sum =  Arrays.stream(myIntArray).sum();

2つの配列の掛け算は少し難しく、Stream操作で値とインデックスを同時に取得する方法が思いつかないからです。つまり、おそらく配列のインデックスをストリームで取得する必要があります。

//in this example a[] and b[] are same length
int[] a = ...
int[] b = ...
 
int[] result = new int[a.length];

IntStream.range(0, a.length).forEach(i -> result[i] = a[i] * b[i]);


コメント欄 ホルガー を使用することができると指摘しています。 map メソッドの代わりに forEach のようにします。

int[] result = IntStream.range(0, a.length).map(i -> a[i] * b[i]).toArray();