gpt4 book ai didi

Java 8,collect方法,创建新的数组列表和突变

转载 作者:行者123 更新时间:2023-11-30 03:53:08 25 4
gpt4 key购买 nike

我只是想澄清有关以下代码的一些内容:

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线程安全和变异,使其符合函数式编程的不变性概念?

最佳答案

是的,collect() 被设计为即使使用非线程安全的可变数据结构也可以并行工作——只要您遵循规则。这些规则包括无干扰——传递给流方法(lambda)的行为参数在操作期间不会修改流的源,并且对于大多数操作,无状态性em> —— lambda 不访问计算期间可能改变的状态。

关于Java 8,collect方法,创建新的数组列表和突变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23895511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com