gpt4 book ai didi

java - Java 8 中的惯用集合迭代

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:55:55 25 4
gpt4 key购买 nike

什么被认为是 Java 8 中集合的惯用迭代,为什么?

for (String foo : foos) {
String bar = bars.get(foo);
if (bar != null)
System.out.println(foo);
}

或者
foos.forEach(foo -> {
String bar = bars.get(foo);
if (bar != null)
System.out.println(foo);
});

最佳答案

一般来说,lambda 形式对于单语句循环更惯用,而非 lambda 形式对于多语句循环更有意义。 (如果可能的话,这会忽略组合成更实用的风格)。

你没有提到的另一种风格是方法引用:

foos.forEach(System.out::println);

编辑:

当您正在寻找更一般的答案时;您可能会发现,由于 lambda 在 Java 中是新的,因此 List.forEach 方法在实践中较少使用。

为了回应“那么为什么非 lambda 对多语句更惯用?”,恰恰相反,多语句 lambda 在大多数语言中都不是惯用的。 Lambdas 往往用于组合,所以如果我从你的问题中举个例子,把它组合成一个函数式的风格:
// Thanks to @skiwi for fixing this code
foos.stream().filter(foo -> bars.get(foo) != null).forEach(System.out::println);

在上面的例子中,使用多语句 lambda 会使阅读变得更难而不是更容易。

关于java - Java 8 中的惯用集合迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800096/

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