gpt4 book ai didi

java - 使用 Java Streams 从嵌套列表中 findAny

转载 作者:行者123 更新时间:2023-11-30 05:36:10 24 4
gpt4 key购买 nike

我需要从嵌套的List中找到一些对象。

我认为不需要类代码,因为过滤是在嵌套的 For-Each 循环 中公开的。

int value = someValue;

MyObject found = null;
for (List<MyObject> list : nestedList) {
for (MyObject myObject : list) {
if (myObject.isType() && myObject.getValue() == value) {
found = myObject;
}
}
}

另一个嵌套的是:

List<MyObject> listMyObject = new ArrayList<>();
for (List<MyObject> list : nestedList) {
for (MyObject myObject : list) {
if (myObject.isType() && myObject.getValue() == value) {
listMyObject.add(myObject);
}
}
}

我从这段代码开始,但我很困惑。

nestedList.stream()
.forEach(list -> list.stream()
.filter(myObject -> myObject.isType() && myObject.getValue() == value)
.findAny()
);

如何使用 Streams 替换代码中的 For-Each 循环

第二个循环的解决方案for

listMyObject = nestedList.stream()
.flatMap(List::stream)
.filter(myObject -> myObject.isType() && myObject.getValue() == value)
.collect(Collectors.toList());

最佳答案

您可以将 findAny 用作:

MyObject found = nestedList.stream()
.flatMap(List::stream)
.filter(myObject -> myObject.isType() && myObject.getValue() == someValue)
.findAny()
.orElse(null);

尽管您的实际代码确保选择最后找到的对象,因为每次满足条件时都会覆盖该对象。

关于java - 使用 Java Streams 从嵌套列表中 findAny,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56573017/

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