System.out.pr-6ren">
gpt4 book ai didi

java - 如果 forEach 是抽象方法,它如何将 lambda 表达式应用于数组?

转载 作者:行者123 更新时间:2023-11-30 01:43:38 24 4
gpt4 key购买 nike

List<String> friends = Arrays.asList("Brian", "Nate", "Neal", "Sara");
friends.forEach(name -> System.out.println(name));

我正在学习java,我发现了这个例子,我只是将它放在main中,它正常打印了数组,所以我的问题是:

据我了解 name -> System.out.println(name) 是一个 lambda 表达式,用于快速实现打印功能,但我想知道 forEach 是如何应用的它是数组的每个元素?它是 Iterable 接口(interface)的一个方法,因此...空,那么代码在哪里告诉我们将 print 应用于数组中的每个名称?

最佳答案

Arrays.asList 在当前实现中返回 ArrayList,它具有使用普通 for 循环进行迭代的 forEach 实现 将 lambda 应用于每个元素。它重写(通过某些继承层)并实现Iterable.forEach。当然,它还扩展了List。来自 java.util.ArrayList:

for (int i = 0; modCount == expectedModCount && i < size; i++)
action.accept(elementAt(es, i));

来自 java.util.Arrays:

public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}

关于java - 如果 forEach 是抽象方法,它如何将 lambda 表达式应用于数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59020633/

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