gpt4 book ai didi

java - 使用 Java Streams 获取不包含在同一列表中的结果列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:54 26 4
gpt4 key购买 nike

假设我有一个 ToFilter 对象列表,如下所示:

private class ToFilter {
String option1;
String option2;
}

我想使用 Java 流过滤掉选项 1 未包含在任何其他对象的选项 2 中的所有元素。例如,如果有 4 个 ToFilter 实例:

option1 = C,
option2 = A

option1 = C,
option2 = F

option1 = A,
option2 = B

option1 = A,
option2 = D

C 应该被过滤并包含在结果集中,因为它在 option1 中有条目,但在任何其他对象的 option2 中没有条目。类似于 nonematch(),但它实际上返回一个 ToFilter 对象列表,而不仅仅是一个 boolean 值 true。

最佳答案

我会使用两个流,创建一组所有 option2 值,我根据这些值检查集合中的 option1 值:

List<ToFilter> list = ...;

Set<String> option2Set = list.stream()
.map(ToFilter::getOption2)
.collect(Collectors.toSet());

List<ToFilter> filtered = list.stream()
.filter(f -> !option2Set.contains(f.getOption1()))
.collect(Collectors.toList());

关于java - 使用 Java Streams 获取不包含在同一列表中的结果列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53679578/

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