Я нашел ошибку.На самом деле я пытался воспроизвести, используя Integers вместо объекта Bucket, например:
Set<Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(2);
set1.add(3);
set1.add(4);
Set<Integer> set2 = new HashSet<>();
set2.add(2);
set2.add(3);
set2.add(5);
set2.add(6);
Set<Integer> relevantBuckets = set1.stream()
.filter(e -> Sets.intersection(set1, set2).size()>0)
.collect(Collectors.toSet());
System.out.println(relevantBuckets);
печатает: [1, 2, 3, 4]
Когда я воспроизводил с использованием объекта, онработал нормально.
Set<Integer> allElements = new HashSet<>();
allElements.add(1);
allElements.add(2);
allElements.add(3);
allElements.add(4);
allElements.add(5);
Set<Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(2);
Set<Integer> set2 = new HashSet<>();
set2.add(1);
set2.add(20);
Bucket bucket1 = new Bucket();
bucket1.setId(1);
bucket1.setMySet(set1);
Bucket bucket2 = new Bucket();
bucket2.setId(2);
bucket2.setMySet(set2);
Set<Bucket> allBuckets = new HashSet<>();
allBuckets.add(bucket1);
allBuckets.add(bucket2);
Set<Bucket> selectedBuckets = allBuckets.stream()
.filter(e -> Sets.intersection(e.getMySet(), allElements).size()>0)
.collect(Collectors.toSet());
System.out.println(selectedBuckets);
печатает: [Bucket [id = 1], Bucket [id = 2]]
selectedBuckets = allBuckets.stream()
.filter(e -> Sets.intersection(e.getMySet(), allElements).size()>1)
.collect(Collectors.toSet());
System.out.println(selectedBuckets);
печатает: [Bucket [id = 1]]
Я подумал об удалении вопроса, но поскольку сообщество могло извлечь из него пользу, я решил ответить на вопрос сам, а не редактировать.