gpt4 book ai didi

Java 8 嵌套流 : return a value in last stream

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:50 24 4
gpt4 key购买 nike

这个问题可以认为是基于java 8 nested streams

假设我有一个带有 BasketItemBatch :

public class Batch {
private List<Basket> baskets;
}

public class Basket {
private List<Item> items;
}

public class Item {
private String property;
private int value;
}

我想用 Java 8 流重写这个方法。

public class SomeService {
public int findValueInBatch(Batch batch) {
for (Basket basket : batch.getBaskets()) {
for (Item item : basket.getItems()) {
if (item.getProperty().equals("someValue") {
return item.getValue();
}
}
}
return 0;
}
}

我应该怎么做?

迈向我想去的地方的第一步:

public int findValueInBatch(Batch batch) {
for (Basket basket : batch.getBaskets()) {
basket.getItems().stream()
.filter(item -> item.getProperty.equals("someValue")
.findFirst()
.get();
// there I should 'break'
}
}

非常感谢。

最佳答案

baskets.stream()
.flatMap(basket -> basket.getItems().stream())
.filter(item -> item.equals("someValue"))
.findAny()
.orElseThrow(NoSuchElementException::new);

使用 findAny 而不是 findFirst 的优点是 findFirst 不适用于并行流。因此,如果您想并行执行上述操作,您只需将 stream() 方法替换为 parallel()

关于Java 8 嵌套流 : return a value in last stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43498884/

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