簡體   English   中英

使用比較器對Java TreeSet進行排序

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

}

執行結果如下:

EXEC

顯然,也沒有編譯錯誤。

如果您的代碼與下面給出的代碼段匹配,那么它應該可以正常運行而不會出現問題。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM