我有一个Guava Multiset<Integer>,想通过对(a)元素值和(b)元素计数排序的条目独立地进行迭代。我已经使用Simplest way to iterate through a Multiset in the order of element frequency?作为

ImmutableMultiset<Integer> entryList = Multisets.copyHighestCountFirst(myIntegerMultiset);
for (Integer i : entryList) {
    System.out.println("I"+i);
}

但这会返回所有条目,而我想要一个Multiset.Entry<Integer>的排序列表(每个唯一值一个),它可以让我获得计数。

我想独立地获得Multiset.Entry<Integer>的相同列表,该列表按<Integer>的值排序。

最佳答案

Iterable<Multiset.Entry<Integer>> entriesSortedByCount =
   Multisets.copyHighestCountFirst(multiset).entrySet();
Iterable<Multiset.Entry<Integer>> entriesSortedByValue =
   ImmutableSortedMultiset.copyOf(multiset).entrySet();

基本上,您只需要entrySet(),而不是遍历Multiset本身。

09-13 00:52