Я просто хочу уточнить кое-что относительно кода ниже:
public static void ageOverTen(final List<Human> man) {
final List<Human> byAge = man.stream()
.filter(age -> age.getAge() > 10)
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
System.out.println("People over 10 years: " + byAge);
}
В мире Java мы все знаем, что ArrayList
не является потокобезопасным и изменчивым, поэтому, когда вы создаете поток и используете метод collect()
, а в нем мы создаем ArrayList
. Как библиотека влияет на ArrayList
потокобезопасность и мутацию, чтобы она соответствовала концепции неизменности функционального программирования?