gpt4 book ai didi

java - 如何将内部元素从流添加到流?

转载 作者:行者123 更新时间:2023-12-02 00:34:43 25 4
gpt4 key购买 nike

如果我有类 Warehouse ,其中包含不同框的列表,则放置在这里。盒子里面可以有盒子,在这种情况下,它们的 id 以“大”开头,并且它们的列表由“小”盒子组成

class Warehouse{
private List<Box> boxes;
}
class Box {
private String id;
private List<Box> innerBoxes;
}

下一个方法返回 WarehouseBoxStream

public Stream<Box> getBoxes();

我如何才能获得所有盒子,即一个仓库和“大”盒子中的盒子?我尝试了下一个方法

public Stream<Box> getAllBoxes(){
return getBoxes().stream().filter(b -> b.getId().startsWith("big"));
}

但是它只返回内部盒子,如何在一个流中收集内部盒子和大盒子?

最佳答案

如果你想在流中收集内部盒子和大盒子,你可以使用stream.of()和stream.concat();

public Stream<Box> flattened() {
return Stream.concat(
Stream.of(this),
innerBoxes.stream().flatMap(Box::flattened));
}

有关这方面的更多信息可以在此处找到 http://squirrel.pl/blog/2015/03/04/walking-recursive-data-structures-using-java-8-streams/

一旦该方法存在于您的 Box 类中,您就可以调用

warehouse.boxes.stream().flatMap(Box::flattened); //Collect as needed

关于java - 如何将内部元素从流添加到流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59358293/

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