我正在遍历一些String输入,试图将其转换为java 8 stream / 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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句