Я сделал некоторый кусок кода, который я не понимаю, почему он работает, и я не могу найти четкого ответа.Вот мой код:
log.debug("before");
for (Employee e : this.employees) {
log.debug(e.toString());
}
employees
.stream()
.filter(e -> e.getUuid().equals(event.getEmployeeUuid()))
.peek(e -> {
e.setPosition(event.getPosition());
}).collect(Collectors.toList());
log.debug("after");
for (Employee e : this.employees) {
log.debug(e.toString());
}
и вот вывод:
before
Employee(uuid=aaa, position=Lord)
Employee(uuid=bbb, position=Employee)
after
Employee(uuid=aaa, position=Overlord)
Employee(uuid=bbb, position=Employee)
Итак, мой общий вопрос: почему это работает?Я заметил это поведение случайно, и оно работает только тогда, когда .collect(Collectors.toList())
присутствует в конце обработки потока.Обратите внимание, что нет явного назначения вывода потока в список this.employees
.