java - 使用比较器对 Java TreeSet 进行排序

标签 java sorting set comparator treeset

我正在尝试使用 Comparator 接口(interface)对对象(“Etudiant”)的 TreeSet 进行排序。这是Comparator实现:

import java.util.Comparator;


public class TriParNom implements Comparator<Etudiant>{
    public int compare(Etudiant o1, Etudiant o2) {
        return o1.getNom().compareTo(o2.getNom());
    }
}

这里是 TreeSet 声明和 main 中比较器的调用:

TreeSet<Etudiant> University= new TreeSet<Etudiant>(new TriParNom());

当我声明 TreeSet 并调用比较器时,我在主类中遇到的错误是:没有找到适合 TreeSet(TriParNom) 的构造函数。

请问有什么解决办法吗?提前致谢。

最佳答案

我根据您提供的信息尝试了一个非常简单的实现,然后给您我的结果:

project structure

Etudiant 类是一个非常简单的 pojo

public class Etudiant {

private String nom;

public String getNom() {
    return nom;
}

public void setNom(String nom) {
    this.nom = nom;
}   }

TriParNom 类是您描述的普通比较器:

import java.util.Comparator;

public class TriParNom implements Comparator<Etudiant> {

    @Override
    public int compare(Etudiant o1, Etudiant o2) {
        return o1.getNom().compareTo(o2.getNom());
    }

}

这是一个简单的类,带有入口点和示例方法来练习新创建的树集

import java.util.TreeSet;

public class Main {

    public static void main(String[] args) {
        TreeSet<Etudiant> u = new TreeSet<>(new TriParNom());
        System.out.printf("size? %d%n", u.size());      
    }

}

执行结果如下:

exec

显然,也没有编译错误。

关于java - 使用比较器对 Java TreeSet 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53136315/

相关文章:

java - IntelliJ - 如何让它警告我有关静态成员的隐式访问?

linux - 如何对 10GB 的文件进行排序?

jquery - 为 jQuery dataTables 实现自定义 sSortType 和排序函数

ios - 将 Set<CustomObject> 存储到 UserDefaults

function - 我用 Set.Fold F# 做错了什么

java - 为什么要这么写一个迭代器呢?

java - 我应该如何在 JFrame 之外创建一个 "panel"?

java - Kafka-Message 自定义 header 中允许的包

arrays - 在数组中找到具有最小差异的一对的有效方法

python - 在Python中比较时间序列中的字符串元素