gpt4 book ai didi

列表中列表的Java 8 Stream过滤值

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:09 27 4
gpt4 key购买 nike

我有一个如下所示的对象

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,所以我希望得到一个结果 -> myObject 类型 B,子类型:W、X、Z

以下当前返回列表中的 2 个项目。

myObjects.stream()
.filter(t -> t.getType().equals("B")
.collect(Collectors.toList());

但我想在每个子类型上添加一个额外的过滤器,并且只匹配存在“Z”的位置。

最佳答案

你可以这样做:

myObjects.stream()
.filter(t -> t.getType().equals(someotherType) &&
t.getSubTypes().stream().anyMatch(<predicate>))
.collect(Collectors.toList());

这将获取所有 MyObject对象

  • 满足关于 type 的标准成员。
  • 在嵌套 List<String> 中包含对象满足一些其他标准,用 <predicate> 表示

关于列表中列表的Java 8 Stream过滤值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27822703/

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