リストのためのBinaryOpertor <整数>リストを追加します

ハンズ:

前の質問では、私は以前に尋ねたどのFunctionalInterfaceは、私が使用する必要がありますか?

今、私はに追加しようとしていたList<Integer>だけでなく、2つの整数ab各インデックスは、別のリストの同じインデックスに追加されますように、。

私が以前持っていました

 BinaryOperator<Integer> binaryOperator = Integer::sum;

使用して2つの整数を追加するためbinaryOperator.apply(int a,int b)同様の方法などがあります

BinaryOperator<List<Integer>> binaryOperator = List<Integer>::sum;

その後、中に結果を得ますかList<Integer> cList

Ousmane D .:

あなたが(この特定のケース合計で)対応するインデックスにある要素の上にいくつかの計算を実行したい場合に使用する必要はありませんBinaryOperator、代わりに使用してIntStream.rangeインデックスを生成します:

// generates numbers from 0 until list.size exclusive 
IntStream.range(0, list.size())....

// generates numbers from 0 until the minimum of the two lists exclusive if needed
IntStream.range(0, Math.min(list.size(), list2.size()))....

このタイプのロジックのための共通の名前は「郵便番号」です。二つの入力シーケンスが与えられたとき、すなわち、それは、同じ位置の入力シーケンスからの各2つの要素がいくつかの機能を使用して合成された出力シーケンスを生成します。

そこには組み込みの方法そのための標準ライブラリにはいませんが、あなたは、いくつかの一般的な実装を見つけることができるここに

例えば、使用してzipリンクポストの受け入れ答えに方法を、あなたは、単に行うことができます:

List<Integer> result = zip(f.stream(), s.stream(), (l, r) -> l + r).collect(toList());

またはメソッド参照を使用して:

List<Integer> result = zip(f.stream(), s.stream(), Math::addExact).collect(toList());

どこfs整数のリストです。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=200021&siteId=1