Tôi mới sử dụng Java 8. Tôi đang học phương pháp của phương pháp reduce
của API. Tôi nhìn thấy một hành vi kỳ lạ với mã này:Tại sao chức năng kết hợp giảm không được thực thi?
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);
}
}
Output:
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]
Câu hỏi của tôi là lý do tại sao chức năng bộ kết hợp không thực hiện nghĩa tại sao dòng này:
System.out.println("List One Data: " + listOne + " List Two data: " + listTwo);
.. . không được thực thi?
Nhờ có nó !. – vicky
Trả lời câu trả lời của bạn một chút để làm cho nó rõ ràng hơn. Bạn biết cách hoàn tác trong trường hợp bạn không thích những thay đổi của tôi, tôi đoán vậy. – GhostCat