java - 如何不按键而是按值类的字段对映射进行排序?

标签 java sorting dictionary

我有一张这样的 map :

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

关于java - 如何不按键而是按值类的字段对映射进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15407571/

相关文章:

JavaFx ListView<Float> 设置所有元素的字体颜色

python - 如何在文本文件中搜索给定单词的字谜

java - J2ME 数据库或数据管理

java - 在JAVA中订购一套不重复

java - 删除字符串的一部分之后的所有内容

java - 由 : java. lang.ClassCastException : $ProxyX cannot be cast to my. package.DefaultCustomerProviderImpl 引起

mysql - 是否可以使用 MySQL 函数恢复字段中字母的顺序以进行排序?

javascript - 对类数组对象进行排序 Angular

java - HashMap 和操作

python - 使用字典而不是排序然后搜索