gpt4 book ai didi

Java 8 流 - 将方法传递给过滤器

转载 作者:行者123 更新时间:2023-11-30 01:55:08 25 4
gpt4 key购买 nike

我有一组整数 set2 和一个对象:

public class Bucket {
private Integer id;
private Set<Integer> set1;
...
}

我想使用流来过滤存储桶,但仅限于其 set1 与另一个 set2 有交集的存储桶。我尝试了以下代码:

Set<Bucket> selectedBuckets = allBuckets.stream()
.filter(e -> Sets.intersection(e.getSet1(), set2).size()>1)
.collect(Collectors.toSet());

但这将返回 allBuckets 的所有元素,而不是仅返回其集合包含交集的元素。我怎样才能做到这一点 ?

最佳答案

假设您的意思是与 List 中的任何其他 Bucket 的交集(Set set1 内容),您可能只是在寻找什么>:

List<Bucket> allBuckets = new ArrayList<>(); // as you may initialise
Set<Bucket> selectedBuckets = allBuckets.stream()
.filter(e -> allBuckets.stream()
.filter(f -> f != e)
.flatMap(b -> b.getSet1().stream())
.anyMatch(s -> e.getSet1().contains(s)))
.collect(Collectors.toSet());

关于Java 8 流 - 将方法传递给过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54798311/

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