This question already has answers here:
Sort a Map<Key, Value> by values
(57个答案)
7年前关闭。
我有这样的地图:
该值是一个类:
我想不按键(使用TreeMap会很容易)对地图进行排序,而是按TC类中的字段“ a”变量进行排序。因此,具有最高“ a”值的元素应位于mapToSort的顶部。
是否有内置的或其他优雅的解决方案来实现这一目标?
(57个答案)
7年前关闭。
我有这样的地图:
Map<String, TC> mapToSort= new HashMap<String, TC>();
该值是一个类:
class TC {
private int a;
public TC(int a) {
this.a = a;
}
//getters-setters
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
}
我想不按键(使用TreeMap会很容易)对地图进行排序,而是按TC类中的字段“ a”变量进行排序。因此,具有最高“ a”值的元素应位于mapToSort的顶部。
是否有内置的或其他优雅的解决方案来实现这一目标?
最佳答案
由您的类实现Comparable,然后将其放入TreeSet
class TC implements Comparable<TC> {
private int a;
public TC(int a) {
this.a = a;
}
//getters-setters
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
@Override
public int compareTo(TC tc){
return this.a-tc.getA();
}
}