Мое понимание Multiset - это набор с частотой, но я всегда могу использовать Map для представления частоты, есть ли другая причина использовать Multiset?
Guava MultiSet против карты?
Ответ 1
Преимущества Multiset<E>
над a Map<E, Integer>
:
- При добавлении элемента, который еще не находится в коллекции, не требуется специального кода.
- Методы непосредственного обращения к счету элементов:
count(E)
,add(E, int)
и т.д. - Цель кода более понятна. A
Multiset<E>
, очевидно, отображает элементы в их числа. AMap<E, Integer>
может отображать элементы в произвольные целые числа.
См. также:
Ответ 2
Для меня самая важная точка, которая устанавливает Multiset
, кроме Map
, состоит в том, что она a Collection
: вы просто вкладываете в нее материал, и вы можете получить счет позже. Он концептуально подходит для вариантов использования, для которых он сконструирован там, где Map
нет. Для этих случаев использование Map
- это просто хак, который вроде-sorta работает нормально, так как Java не предоставил ничего более подходящего.