根据Object的成员变量对HashMap进行排序

Nav*_*ath 6 java sorting collections hashmap

有一节课

class Employee {
    int id;
    String name;
}
Run Code Online (Sandbox Code Playgroud)

和一个包含此对象的地图

Map<Integer, Employee> map = new HashMap<Integer, Employee>();
Run Code Online (Sandbox Code Playgroud)

现在我想在map一个基础之上排序Employee's name.意味着当我使用迭代此地图时Map.Entry,Employee对象必须按字母顺序返回.

提前致谢

Nav*_*ath 1

Micha\xc3\xabl 建议了一个链接,即Sort a Map<Key, Value> by values (Java)。我对它做了一些改变。这对我有用

\n\n
class ValueComparator implements Comparator<Integer> {\n\n    Map<Integer, Employee> base;\n    public ValueComparator(Map<Integer, Employee> base) {\n        this.base = base;\n    }\n\n    // Note: this comparator imposes orderings that are inconsistent with equals.    \n    public int compare(Integer a, Integer b) {\n        return ((Employee)base.get(a)).compareTo(base.get(b));\n    }\n\n}\n\nclass Employee implements Comparable {\n    public String name;\n    public int id;\n\n    Employee(int id, String name) {\n        this.id = id;\n        this.name = name;\n    }\n\n    @Override\n    public int compareTo(Object obj) {\n        return this.name.compareTo(((Employee)obj).name);\n    }\n\n    public String toString() {\n        return name;\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

有关解决方案,请也参考上面提到的链接。

\n\n

感谢所有回复的人。

\n