Самый простой способ перебрать мультимножество в порядке частоты элементов?

Рассмотрим этот пример, который распечатывает некоторую статистику типа устройства. («DeviceType» - это перечисление с дюжиной значений.)

Multiset histogram = getDeviceStats();
for (DeviceType type : histogram.elementSet()) {
    System.out.println(type + ": " + histogram.count(type));
}

Какой самый простой и элегантный способ распечатать отдельные элементы в порядке их частоты (сначала наиболее распространенный тип)?

Если бегло взглянуть на интерфейс Multiset , нет готового метода для этого, как и ни один из методов Guava. Реализации Multiset ( HashMultiset , TreeMultiset и т. Д.), Похоже, также автоматически поддерживают упорядочение частоты элементов.

32
задан sebkur 23 December 2017 в 14:51
поделиться