【发布时间】:2014-11-03 20:47:24
【问题描述】:
我有一张地图,其中键为字符串,值为列表,需要根据值对地图进行排序
HashMap<String, List<Integer>> data = new HashMap<String, List<Integer>>();
其中 List 的大小为 3,需要对 item1、item2 和 list 的 item3 进行升序排序
例如,如果我有一张像下面这样的地图
K1=[3, 1, 96],
K2=[0, 4, 4],
K3=[3, 2, 88],
K4=[2, 2, 12],
K5=[3, 3, 64],
K6=[2, 4, 12],
K7=[3, 4, 64],
K8=[2, 1, 12],
K9=[2, 3, 12],
K10=[1, 2, 33],
K11=[3, 1, 45],
K12=[1, 1, 12],
K13=[0, 1, 6],
K14=[0, 1, 3],
K15=[2, 1, 12],
K16=[3, 4, 22],
排序后:
K14=[0, 1, 3],
K13=[0, 1, 6],
K2=[0, 4, 4],
K12=[1, 1, 12],
K10=[1, 2, 33],
K8=[2, 1, 12],
K15=[2, 1, 12],
K4=[2, 2, 12],
K9=[2, 3, 12],
K6=[2, 4, 12],
K11=[3, 1, 45],
K1=[3, 1, 96],
K3=[3, 2, 88],
K5=[3, 3, 64],
K16=[3, 4, 22],
K7=[3, 4, 64]
如何做到这一点?
谢谢
【问题讨论】:
-
How to sort a HashMap in Java 的可能重复项 - 另外值得一提的是,您无法对 HashMap 进行排序。这是一个地图,它没有排序顺序。这是一组没有顺序保证的值。
-
HashMap 和 TreeMap 都不能按值排序(HashMap 根本无法排序,TreeMap 只能按键排序),因此您必须将其传输到其他数据结构。您对数据结构有什么需求?
-
我基本上有一个包含 4 个项目的列表 [id,type,value1,value2],我必须根据 type、value1 和 value2 对它们进行排序。如何做到最好
-
@user3008823 在这种情况下,请参阅我的更新答案。
-
4 个项目的 id 是字符串,其余的是整数,它不是一个仅包含整数的列表