[JAVA] Vergleichbar und Komparator (Objekte bestellen)

Sehr verwirrend

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 -Schnittstelle "Vergleichbar" (1) Die TreeSet-Klasse führt den Casting-Prozess zum __Comparable -Typ __ durch, wenn die Elemente intern neu angeordnet werden. (2) Wertklassen wie die String-Klasse und die Integer-Klasse der Standardbibliothek implementieren die Schnittstelle 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.

Zusammenfassung

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.)

Recommended Posts

Vergleichbar und Komparator (Objekte bestellen)
veränderliche und unveränderliche Objekte
[Java8] Angemessene Verwendung von Compareable und Comparator unter dem Gesichtspunkt der Mitarbeitersortierung