gpt4 book ai didi

java - java Lambda表达式,传递参数

转载 作者:行者123 更新时间:2023-12-01 16:44:00 25 4
gpt4 key购买 nike

我在使用 java 中的 lambda 表达式时遇到问题。

List<String> l = new ArrayList<String>();
l.add("Besit");
l.add("Java");
String str = "Java";
boolean flag = false;
int counter = 0;
l.forEach((h) -> {
if (h.equals(str)) {
counter++;
flag = true.
}
});

显然,我有错误,因为 forEach 没有看到 strflag,我知道在 C++ lambda 中我们可以通过引用传递一些参数。 java 可以做到这一点吗?

最佳答案

您应该以不同的方式处理该问题,以便不需要更新 lambda 中的 flag (不过您可以访问 str):

boolean flag = l.stream().anyMatch(h -> h.equals(str));
<小时/>

为了您的updated code ,您可以这样做:

int counter = (int) list.stream().filter(h -> h.equals(str)).count();
// or int counter = (int) list.stream().filter(h -> h.equals(str)).mapToInt(h -> 1).sum();
boolean flag = count > 0;

关于java - java Lambda表达式,传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56485988/

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