我有一个对象,它看起来像下面这样
class MyObject {
String type;
List<String> subTypes;
}
在给定MyObject列表的情况下,是否可以使用Java 8流来先过滤类型,然后再过滤子类型?
目前我已经有了以下代码:
myObjects.stream()
.filter(t -> t.getType().equals(someotherType)
.collect(Collections.toList());
但是在此基础上,我还想对每个子类型中的特定子类型进行另一个过滤器。我无法弄清楚如何实现。
例如:
myObject { type: A, subTypes [ { X, Y, Z } ] }
myObject { type: B, subTypes [ { W, X, Y } ] }
myObject { type: B, subTypes [ { W, X, Z } ] }
myObject { type: C, subTypes [ { W, X, Z } ] }
我会传入匹配类型为B和子类型为Z,因此我期望得到一个结果-> 我的对象类型为B,子类型包括W、X、Z。
以下代码目前返回列表中的2个项目。
myObjects.stream()
.filter(t -> t.getType().equals("B")
.collect(Collectors.toList());
但我希望在每个子类型上添加一个额外的过滤器,只匹配包含“Z”的内容。
subTypes
中的所有元素都必须匹配吗? - user1907906subTypes
吗? - kraskevich