是否有理由在Java中对MultiMap进行排序以及如何进行排序?
答案 0 :(得分:1)
假设你在谈论org.apache.commons.collections.MultiMap
,那么你不能;因为它返回Collection
而不是List
,所以它不支持订单的概念。
如果您正在谈论org.apache.commons.collections.MultiHashMap
,那么您需要做的就是遍历密钥,返回ArrayList
并使用Collections.sort()
对其进行排序。
假设您正在使用that implementation though。
虽然支持排序列表,但没有什么可以阻止您轻松实现自己的MultiMap
。它可能就像HashMap<K, Collection<V>>
一样简单,我不熟悉MultiMaps的工作原理。
答案 1 :(得分:1)
实际上我不知道你为什么要对Map进行排序。 Map是一个字典,您可以从这个字典中检索一个(或者在多个映射的情况下是您感兴趣的值的集合)。
对于MultiMap,您可能希望对get产生的Collection进行排序。但是你有一个有条理的地图有什么优势,因为它没有加速寻找特定值的任何东西?
答案 2 :(得分:0)
最简单的解决方案是使用番石榴的TreeMultimap。直接使用
TreeMultimap<...> sortedMap = TreeMultimap.create(notSortedMultiMap);
如果你的键和值可以自然排序(实现Comparable),或者
TreeMultimap<...> sortedMap = TreeMultimap.create(keyComparator, valueComparator);
sortedMap.putAll(notSortedMultiMap);
如果您需要提供自定义比较器。
如果你知道你需要对它进行排序而不关心检索速度那么多,你当然可以从一开始就使用TreeMap。
然后,您可以迭代TreeMap或使用类似值()或条目来获取已排序的集合。