【发布时间】:2015-01-07 15:25:27
【问题描述】:
我有一个如下所示的对象
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”的位置。
【问题讨论】:
-
你能举一个比赛和错过的例子吗?
subTypes中的所有元素必须匹配吗? -
你想过滤
subTypes还是什么? -
“每个子类型上的另一个过滤器过滤特定子类型上的那些”到底是什么意思?请举个例子。