Как получить размер пересекаемого множества?

Мне нужно получить размер пересекаемого множества, а затем мне нужно использовать размер в формуле.

Set<String> a;
Set<String> b;
a.retainAll(b).size();
// error: cannot invoke size() on primitive type boolean//

Я пытался сделать это несколькими различными способами, но мой код становился все более и более сложным. Кто-нибудь может поставить меня на правильный путь?

Благодарю.

1 ответ

Согласно документации retainAll метод возвращает boolean - был ли изменен набор. Вы можете игнорировать это значение. Основным эффектом этого метода является модификация набора a, так что он содержит пересечение. Следовательно, решение

a.retainAll(b);
int result = a.size();

Обратите внимание, что содержимое множества a изменен этим кодом. Если вам нужно сохранить его:

Set<String> intersection = new HashSet<String>(a);
inersection.retainAll(b);
int result = intersection.size();
Другие вопросы по тегам