【问题标题】:how to sort hashmap by values? [duplicate]如何按值对哈希图进行排序? [复制]
【发布时间】:2011-11-14 11:52:07
【问题描述】:

可能重复:
How to sort a Map<Key, Value> on the values in Java?

我需要根据存储在其中的值对哈希图进行排序。哈希图包含存储在电话中的联系人姓名。我还需要在对值进行排序后立即自动对键进行排序。或者您可以说键和值是绑定在一起的,因此值的任何更改都应该反映在键中。

 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);

需要的输出:

2,abby;
5,daisy;
3,denver;
4,frost;
1,froyo;

【问题讨论】:

  • 还有一个与今天早些时候发布的问题几乎完全相同的副本。 -1 用于重新发布,甚至不修复示例中的错误。
  • 如果您能提供答案就好了。顺便说一句,您在说示例中的错误。
  • 你有("1", froyo)等,当它是&lt;Integer, String&gt;时。
  • 哎呀我没注意到。我的不好,谢谢你提醒我..

标签: java sorting hashmap


【解决方案1】:
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());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2016-03-26
    相关资源
    最近更新 更多