Java 8 列表中列表的流过滤值
我有一个对象,如下所示
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 } ] }
我会传入 matchType B 和 subType Z,所以我期望得到一个结果 -> myObject 类型 B,子类型:W、X、Z
以下当前返回列表中的 2 个项目。
myObjects.stream()
.filter(t -> t.getType().equals("B")
.collect(Collectors.toList());
但我想在每个子类型上添加一个额外的过滤器,并且只匹配存在“Z”的地方。