7
我是Java 8的新手。我正在學習流API的reduce
方法。我看到一個奇怪的行爲與此代碼:爲什麼reduce合併器功能沒有執行?
public class PrdefinedCollectors {
public static void main(String[] args) {
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);
List<Integer> dataHolder = new ArrayList<Integer>();
List<Integer> numbers = stream.reduce(dataHolder,
(List<Integer> dataStore, Integer data) -> {
System.out.println(data + " ->: " + dataStore);
dataStore.add(data);
return dataStore;
},
(List<Integer> listOne, List<Integer> listTwo) -> {
System.out.println("ListOne Data :" + listOne + " List Two data :" + listTwo);
listOne.addAll(listTwo);
return listOne;
});
System.out.println(numbers);
}
}
輸出:
1 ->: []
2 ->: [1]
3 ->: [1, 2]
4 ->: [1, 2, 3]
5 ->: [1, 2, 3, 4]
6 ->: [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
我的問題是,爲什麼合併功能不執行真諦,爲什麼這條線:
System.out.println("List One Data: " + listOne + " List Two data: " + listTwo);
.. .is沒有執行?
多虧了它! – vicky
重寫了你的答案,使其更加清晰。你知道如何做撤銷,以防你不喜歡我的改變。 – GhostCat