Wenn Sie sortieren möchten, können Sie TreeSet anstelle von HashSet verwenden, aber manchmal möchten Sie auch Ihre eigene ursprüngliche Bestellung aufgeben. Comparator und Compareable sind in einem solchen Fall wirksam.
Comparable
java.lang.Comparable
Myclass.java
class MyClass implements Comparable<Myclass>{
//Implementierung abstrakter Methoden
public int compareTo(Myclass obj){
return this.id - obj.id;
}
}
//aufsteigende Reihenfolge
Comparator java.util.Comparator-Schnittstelle "Comparator" Die Motivation für die Verwendung von Comparator besteht darin, die Sortierreihenfolge der in TreeSet, TreeMap usw. gespeicherten Elemente in eine andere als die Standardreihenfolge zu ändern.
Myclass.java
class Myclass implements Comparator<String>{
@Override
public int compare(String obj1, String obj2){
return obj1.length() - obj2.length();
}
}
//aufsteigende Reihenfolge
Konstrukteur | Erläuterung |
---|---|
TreeSet(Comparator<? super E> comparator) | Erstellt einen neuen leeren Baumsatz, der nach dem angegebenen Komparator sortiert ist |
Das TreeSet deklariert einen Konstruktor, der ein Comparator-Objekt als Argument verwendet (beschrieben in OraDocs), sodass jede Sortierreihenfolge angewendet werden kann.
Vergleichbar "Vergleiche dich mit anderen Objekten" Komparator "Vergleicht zwei andere Objekte" (Hinweis: Die Definitionen von TreeSet und TreeMap sind für Compareable und Comparator möglicherweise eher vage als verwirrend.)