根据整数命令HashMap
可能重复:
如何在Java中的值上对Map 进行排序?
亲爱的,我有一个哈希映射,其中我保存了值:歌手(字符串)和流行度(整数)。
现在,我希望根据受欢迎程度订购此哈希映射。
怎么能在java中做到这一点?
我假设你把歌手作为一把钥匙存放,而歌手的受欢迎程度作为价值。 HashMap没有排序,TreeMap按键排序,而不是按值排序,因此无济于事。
如果您需要按流行度排序的歌手,请在地图中创建一个包含所有歌手的列表,然后使用比较器对该列表进行排序,比较两位歌手的受欢迎程度:
List singers = new ArrayList (map.keySet()); Collections.sort(singers, new Comparator () { @Override public int compare(String s1, String s2) { Integer popularity1 = map.get(s1); Integer popularity2 = map.get(s2); return popularity1.compareTo(popularity2); } });
HashMaps可以(按设计)不订购。 如果需要有序地图,请使用TreeMap 。
您无法控制HashMap元素的顺序。 创建一个新的TreeMap
并将数据复制到它。 使用List
来涵盖具有重复int值的情况。