Java 如何按值对hashmap进行排序?
可能重复:Java 如何按值对hashmap进行排序?,java,sorting,hashmap,Java,Sorting,Hashmap,可能重复: 我需要根据hashmap中存储的值对其进行排序。hashmap包含存储在phone中的联系人名称。我还需要在对值进行排序后立即对键进行自动排序。或者您可以说键和值绑定在一起,因此值中的任何更改都应该反映在键中 HashMap<Integer,String> map = new HashMap<Integer,String>(); map.put(1,froyo); map.put(2,abby); map.put(3,denver)
我需要根据hashmap中存储的值对其进行排序。hashmap包含存储在phone中的联系人名称。我还需要在对值进行排序后立即对键进行自动排序。或者您可以说键和值绑定在一起,因此值中的任何更改都应该反映在键中
HashMap<Integer,String> map = new HashMap<Integer,String>();
map.put(1,froyo);
map.put(2,abby);
map.put(3,denver);
map.put(4,frost);
map.put(5,daisy);
私有静态类MyMapComparator实现Comparator
{
@凌驾
公共整数比较(Map.Entry a、Map.Entry b){
返回a.getValue().compareTo(b.getValue());
}
}
...
List entries=newarraylist(map.entries());
排序(条目,新的MyMapComparator());
以及与今天早些时候发布的一个问题几乎完全相同的问题-1用于重新发布,甚至不修复示例中的错误。如果您能够提供答案,那就太好了。顺便问一下,您正在谈论示例中的错误。您有(“1”,froyo)
等,当它是
时。哎呀,我没有注意到。我的错,谢谢您提醒我。。
2,abby;
5,daisy;
3,denver;
4,frost;
1,froyo;
private static class MyMapComparator implements Comparator<Map.Entry<Integer, String>>
{
@Override
public int compare(Map.Entry<Integer, String> a, Map.Entry<Integer, String> b) {
return a.getValue().compareTo(b.getValue());
}
}
...
List<Map.Entry<Integer, String>> entries = new ArrayList<Map.Entry<Integer, String>>(map.entries());
Collections.sort(entries, new MyMapComparator());