【发布时间】:2021-11-10 22:14:45
【问题描述】:
我想将一些方法转移到 java8 函数样式中。
public static String foo(List<String> arguments, List<String> conditions) {
for (String s : conditions) {
for (String argument : arguments) {
if (argument.contains(s)) {
return argument;
}
}
}
return "";
}
我目前的想法是:
public static String fooFunctional(List<String> arguments, List<String> conditions) {
return conditions.stream()
.flatMap(condition -> arguments.stream()
.filter(argument -> argument.contains(condition))
.findFirst()
.map(Stream::of)
.orElseGet(Stream::empty))
.findFirst()
.orElse("");
}
有没有比上面建议的更短的版本?
【问题讨论】:
-
是的。只需删除
.findFirst() .map(Stream::of) .orElseGet(Stream::empty)。