This question already has answers here:
Sort a Map<Key, Value> by values
                                
                                    (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();
    }
}

07-28 03:43
查看更多