получить количество экземпляров элемента в мультимножестве гуавы без итерации - PullRequest
2 голосов
/ 08 октября 2011

У меня есть мультимножество в guava, и я хотел бы получить количество экземпляров данного элемента без итерации по этому мультимножеству (я не хочу повторять, потому что я предполагаю, что итерация занимает довольно много времени, поскольку она просматривает вся коллекция).

Чтобы сделать это, я сначала подумал об использовании метода entryset () multiset, чтобы получить набор с единичными экземплярами и их соответствующим количеством. Затем преобразуйте этот набор в хэш-карту (где ключи - это элементы моего набора, а значения - их количество экземпляров). Потому что тогда я могу использовать методы hashmap для непосредственного получения значения из его ключа - готово! Но это имеет смысл, только если я могу быстро преобразовать набор в hashmap (без перебора всех элементов): возможно ли это?

(как я уже сказал, я ожидаю, что этот вопрос будет ошибочным по нескольким пунктам, я был бы рад, если бы вы смогли пролить свет на концептуальные ошибки, которые я, вероятно, здесь совершаю. Спасибо!)

Ответы [ 2 ]

8 голосов
/ 08 октября 2011

Просто вызовите count(element) на своем мультимножестве - вуаля!

4 голосов
/ 08 октября 2011

Вы можете знать, что в гуаве Multiset - это интерфейс, а не класс.

Если вы просто хотите узнать повторяющийся номер элемента, позвоните Multiset.count(Object element).

Пожалуйста, забудьте мое следующее утверждение:

Тогда, если вы используете популярную реализацию HashMultiset, под сценой уже работает HashMap<E, AtomicInteger>. То есть, когда HashMultiset повторяется, также выполняется итерация HashMap. Не нужно преобразовывать в другой HashMap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...