我想知道是否有可能使用流來調用列表中的每個元素上的函數,並且還可以使用流調用其值以及其值。如何在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」。 – Mena
流的許多優點之一是它不鼓勵變異的數據結構。 – slim