gpt4 book ai didi

Java 8 将 for 循环和值的总和转换为流/lambda?

转载 作者:行者123 更新时间:2023-12-03 23:11:31 26 4
gpt4 key购买 nike

我有一些我正在循环的字符串输入,我正在尝试转换为 java 8 流/lambdas,但遇到了一些问题。我的样板代码如下所示:

public static int count(List<String> list) {
String regex = "someRegexPatternHere"
Pattern p = Pattern.compile(regex);
int sum = 0;

for (String val: list) {
Matcher m = p.matcher(val);
if (m.find()) {
// summing logic here
}
}
return sum;
}
我试图做类似的事情
list.stream()
.filter(i -> p.matcher(i).find())
.map(..............)
...
...但无法得到总结逻辑。有人能指出我正确的方向吗?

最佳答案

您需要先申请matcher然后过滤 find

return inputs.stream()
.map(p::matcher)
.filter(Matcher::find)
.map(m -> m.group(0))
.mapToInt(Integer::parseInt)
.sum();
使用 lambda 函数可以更清楚地看到它,但这是一样的
    return inputs.stream().map(input -> p.matcher(input))
.filter(matcher -> matcher.find())
.map(m -> m.group(0))
.mapToInt(s -> Integer.parseInt(s)).sum();

关于Java 8 将 for 循环和值的总和转换为流/lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64582135/

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