[英]Sort a Java TreeSet using Comparator
我正在嘗試使用Comparator
接口對TreeSet
對象(“ Etudiant”)進行排序。 這是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)的構造函數。
有什么解決辦法嗎? 提前致謝 。
我根據您提供的信息嘗試了一個非常簡單的實現,並給出了我的結果:
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());
}
}
執行結果如下:
顯然,也沒有編譯錯誤。
如果您的代碼與下面給出的代碼段匹配,那么它應該可以正常運行而不會出現問題。 從class TriParNom
刪除零件implements Comparator<Etudiant>
的那一刻,您將得到指示未找到合適的構造函數的錯誤。 現在,如果在實現TriParNom
的比較器后沒有重新編譯類,則可能會發生另一種愚蠢的方式-但這太明顯了。 將延續main
方法(聲明Treeset)的類導入java.util.TreeSet
嗎?
import java.util.Comparator;
import java.util.TreeSet;
public class TreesetCheck {
public static void main(String[] args) {
TreeSet<Etudiant> University= new TreeSet<Etudiant>(new TriParNom());
}
}
class TriParNom implements Comparator<Etudiant>{
public int compare(Etudiant o1, Etudiant o2) {
return o1.getNom().compareTo(o2.getNom());
}
}
class Etudiant {
public String getNom() {
// TODO Auto-generated method stub
return "some";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.