这不是我为了理解下一步要做什么而模拟的真实代码。
我有一个具有年龄、身高体重属性的 Person 类。
现在在我的班级组中,
我创建了两个四个对象
Person programmer, student, clerk, tech;
Run Code Online (Sandbox Code Playgroud)
我有 HashMap rollCall
Map<Person, Integer> rollCall = new HashMap<Person, Integer>();
Run Code Online (Sandbox Code Playgroud)
使用 Person 和 Number of Persons 作为整数类型添加所有这些
rollCall.put(programmer, 1);
rollCall.put(clerk, 2);
rollCall.put(student, 1);
rollCall.put(tech, 3);
Run Code Online (Sandbox Code Playgroud)
我见过很多人使用 TreeMap 根据值对 HashMap 进行排序,我想对 Person 的属性而不是值进行排序。我想按年龄对所有这些人进行排序(即程序员.getAge();)。我不确定我是否会使用仅适用于集合而非地图的比较器。. 请帮忙 ... 。
您可以Map<Person,Integer>使用自定义比较器获得按年龄递增或递减顺序迭代的 a :
Map<Person, Integer> rollCall = new TreeMap<Person, Integer>(
new Comparator<Person>() {
@Override public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge(); // Acending.
// or p2.getAge() - p1.getAge(); // Descending.
}
}
);
Run Code Online (Sandbox Code Playgroud)
当您将 Person 添加到集合中时,它们将按年龄顺序插入。
| 归档时间: |
|
| 查看次数: |
16317 次 |
| 最近记录: |