2016-11-05 24 views
-1

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

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

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

Спасибо.

+0

Добро пожаловать в SO! Надеюсь, вы найдете сайт полезным. По моему опыту, обучение использованию сайта также помогло мне лично вырасти как разработчик. Это отличное начало задавать хороший вопрос. У вас есть представление о том, чего вы хотите достичь, и это имеет смысл интуитивно, однако в нем отсутствует пример того, что вы пробовали вместе с результатами, которые вы наблюдали, и желаемым результатом. Пожалуйста, подумайте над тем, чтобы добавить их, чтобы другие пользователи могли протестировать ваш код и предоставить вам код, который вам полезен. – Bobby

ответ

2

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

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

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

Set<String> intersection = new HashSet<String>(a); 
inersection.retainAll(b); 
int result = intersection.size();