Подтвердить что ты не робот

Guava MultiSet против карты?

Мое понимание Multiset - это набор с частотой, но я всегда могу использовать Map для представления частоты, есть ли другая причина использовать Multiset?

4b9b3361

Ответ 1

Преимущества Multiset<E> над a Map<E, Integer>:

  • При добавлении элемента, который еще не находится в коллекции, не требуется специального кода.
  • Методы непосредственного обращения к счету элементов: count(E), add(E, int) и т.д.
  • Цель кода более понятна. A Multiset<E>, очевидно, отображает элементы в их числа. A Map<E, Integer> может отображать элементы в произвольные целые числа.

См. также:

Multiset Javadoc

Multiset объясняется в Guava Wiki

Ответ 2

Для меня самая важная точка, которая устанавливает Multiset, кроме Map, состоит в том, что она a Collection: вы просто вкладываете в нее материал, и вы можете получить счет позже. Он концептуально подходит для вариантов использования, для которых он сконструирован там, где Map нет. Для этих случаев использование Map - это просто хак, который вроде-sorta работает нормально, так как Java не предоставил ничего более подходящего.