Вы можете просто использовать Set.retainAll(Collection)
:
setOne.retainAll(setTwo);
boolean isMoreTwo = setOne.size() > 2
Если вы не хотите изменять setOne
, создайте новый экземпляр набора:
Set<Integer> newSetOne = new HashSet<>(setOne)
newSetOne.retainAll(setTwo);
boolean isMoreTwo = newSetOne.size() > 2
Обратите внимание, что все способы, показанные для решения вашей задачи (в вашем вопросе, моем ответе и ответе Намана), не являются правильным способом выполнения утверждения в модульном тесте.
Утверждение должно выдавать полезное сообщение об ошибке, еслиутверждение не выполняется.
Так что это действительно не поможет, так как логическое значение истинно или ложно, и это все:
Assertions.assertEquals(true,testSets(setOne,setTwo));
Кроме того, оно также должно быть написано скорее как:
Assertions.assertTrue(testSets(setOne,setTwo));
Чтобы выполнить ваше требование, вы должны посчитать количество подходящих элементов между наборами и остановить его, как только вы достигнете желаемой цели.
long nbMatchLimitedToThree = setOne.stream().filter(setTwo::contains).limit(3).count();
Assertions.assertEqual(3, nbMatchLimitedToThree, "At least 3 matches expected but actually only " + nbMatchLimitedToThree +". setOne=" + setOne + ",setTwo=" + setTwo);
Это более производительный и правильный способ написания модульных тестов.