java - 如何对 map 的键进行排序

标签 java list sorting dictionary tree

如何对映射(树形图或散列图)的键进行排序(任何类型的排序)

我遇到了一个问题,事情是这样的。

我有一张 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/

相关文章:

java - 使用 MySQL 的 DataJpaTest 存储库测试,Hibernate 不会将用户设置为在 H2 DB 中自动递增

python - 从文本文件(例如 : [[1, 2],[3,4]])输入到 python 中的二维列表中

python - 在 python 中将列表中的索引表示为 x,y

python - 在python中对多级字典进行排序

php - 高级 MySQL 查询(分组依据和排序)

java - 如何仅从 HTML 页面中提取主要文本内容?

java - 小程序使用post方式通信

c - 对C中的for循环感到困惑

java - Mapbox:位置符号(圆盘)显示在路线下方

c++ - 在 C++ 中使用模板类