如何使用stream api?
编写这样的java代码int i = 0;
for (Foo[] foo : foo.getFoo()) {
for (Bar bar : foo) {
if (bar.getSometing() == something) {
return "something"
}
}
i++;
}
答案 0 :(得分:0)
您希望anyMatch
方法和嵌套数组/集合的flatMap
:
Collection<Bar[]> foo2 = foo.getFoo();
if (foo2.stream().flatMap(Arrays::stream).anyMatch(bar -> bar.getSomething() == something)) {
return "something";
}
这看起来更好,但运行速度比for-each版本慢,因为Java流有很多开销。您可以尝试在.parallel()
之前添加flatMap
,但这是否有帮助取决于很多因素。
答案 1 :(得分:0)
解决方案可能是:
return Arrays.stream(foo.getFoo())
.flatMap(foo -> foo.getBar().stream())
.filter(bar -> bar.getSomething().equals(something))
.findAny()
.map(a -> "something")
.orElse("some default return value");
我已将想象力用于上述代码的一些事情:
Foo
类有getBar()
方法,返回List<Bar>
equals(something)
代替== something
Bar
实例时,存在一些其他返回值i
的用途是什么?我没有把它包含在我的答案中,因为你没有表现出你在做什么