如何对映射(树形图或散列图)的键进行排序(任何类型的排序)
我遇到了一个问题,事情是这样的。
我有一张 map ,其键为
27527-683,
27525-1179,
27525-1571,
27525-1813,
27525-4911,
27526-1303,
27526-3641,
27525-3989,
27525-4083,
27525-4670,
27526-4102,
27526-558,
27527-2411,
27527-4342
这是键列表,每个键的值都是一个列表。
现在,我如何按数字升序对这个键进行排序。
例如。如果我想排序:1,2,11,20,31,3,10
我想要的输出是:1,2,3,10,11,20,31
但是当我使用树状图的自动排序时,输出为:1,10,11,2,20,3,31
如何按数字升序排序?
请帮我。我想不出更多的方法,因为这是我第一次处理 map 和列表
最佳答案
你的键是字符串。字符串的自然顺序是按字典顺序排列的。您需要在 TreeMap 的构造函数中指定自定义比较器,或者使用 Integer 键。
此外,您可以更好地表示 Map<Key, List<Value>>
作为 Google Guava Multimap
,例如参见 SortedSetMultimap .
继续 Guava 示例:
Multimap<Integer, Person> multimap = SortedSetMultimap.create(Ordering.natural(), Ordering.arbitrary());
multimap.put(1, x);
multimap.put(1, y);
multimap.put(2, z);
multimap.put(1, a);
然后
multimap.get(1)
将返回一个包含任意顺序的 [x, y, a] 的集合。
multimap.keys()
将返回一组排序后的 [1, 2]。
关于java - 如何对 map 的键进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612049/