ストリームを使用してリストの各要素の関数を呼び出すことが可能かどうかを知りたい場合は、をの値に変更します。JAVAのリストの各要素で関数を実行する方法は?
のは、私は整数のリストを持っているとしましょう:List<Integer> list = Arrays.asList(1,2,3);
そして、もう一つですべての番号をインクリメントする方法:
public static Integer plusOne(Integer n){
return n + 1;
}
これは私が各要素に対して関数を呼び出して変更するために使用するものです元のリスト:
for (int i = 0; i < list.size(); i++){
list.set(i, plusOne(list.get(i)));
}
ただし、ストリームを使用してこれを書き込む方法があるかどうかを知りたかったですか?
私が使用してみました:
list.stream()
.forEach(e -> plusOne(e));
をしかし、それはストリームを使用して、元のリストを変更することは不可能だ場合、どのように私は、少なくとも取得することができます...元のリストを変更するように見える、また何も返しませんリストの新しい変更コピー?
出力は、リストで関数を呼び出した後の(2,3,4)のリストでなければなりません。
あなたはストリームを反復しているコレクションを変異さ代わりにmap' ' – Li357
を使用して開始するために非常に悪いアイデアのように思える:あなただけList.replaceAllを使用することができます。更新された値で新しい 'List'を生成する方がよいでしょう。 – Mena
ストリームの多くの利点の1つは、データ構造を変更することをやめさせることです。 – slim