gpt4 book ai didi

java - 使用包含列表的流过滤数据?

转载 作者:行者123 更新时间:2023-12-01 09:02:34 26 4
gpt4 key购买 nike

elementList是所有元素的列表

class Element{  
private ArrayList<Shape> shapeList = new ArrayList<Shape>();
}

...

class Shape{
private String color;
private String shape;
}

尝试过滤元素列表,其中每个元素都包含不同形状的列表。

    List<Shape> roundShapes = elementList.stream()  
.filter(x -> x.getShapeList()(})

//not sure what to have here.
//I need to loop/stream the data that i get form getShapeList(). How to do this?
//A stream inside a stream?

.collect(Collectors.toList());

例如,找到一个红色且圆形的形状。问题是我不能直接过滤它,因为数据位于另一个列表中。

我可以循环所有元素并将每个 shapeList 添加到一个大列表中,然后流式传输该列表。但这需要一个 for 循环并迭代每个循环,我想使用流而不是 if for 循环。

最佳答案

您需要展平 map ,然后迭代形状。
shape.getShape().equals("Round") 替换为所需形状的过滤条件。

List<Shapes> roundShapes = elementList.stream().flatMap(element -> element.getShapeList().stream())
.filter(shape -> shape.getShape().equals("Round")).collect(Collectors.toList());

关于java - 使用包含列表的流过滤数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41557479/

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