您可以获取一组条目,然后根据需要对其进行排序。
以下是获取一组条目的方法:
Set<Multiset.Entry<Integer>> entries = myIntegerMultiset.entrySet();
然后排序我们可以定义两个比较器:
Comparator<Multiset.Entry<Integer>> byCount = new Comparator<Multiset.Entry<Integer>>() {
int compare(Multiset.Entry<Integer> e1, Multiset.Entry<Integer> e2) {
return e2.getCount() - e1.getCount();
}
}
Comparator<Multiset.Entry<Integer>> byValue = new Comparator<Multiset.Entry<Integer>>() {
int compare(Multiset.Entry<Integer> e1, Multiset.Entry<Integer> e2) {
return e2.getElement() - e1.getElement();
}
}
然后,您可以将比较器提供给树集以获取排序集合:
Set<Multiset.Entry<Integer>> entries = myIntegerMultiset.entrySet();
Set<Multiset.Entry<Integer>> entriesSortedByCount = Sets.newTreeset(byCount);
entriesSortedByCount.addAll(entries);
Set<Multiset.Entry<Integer>> entriesSortedByValue = Sets.newTreeset(byValue);
entriesSortedByValue.addAll(entries);
实际上,Louis Wasserman 的答案要好得多,但如果您想自定义排序,我也会发布这个答案。