Das Beispiel in diesem Artikel beschreibt die Java TreeSet-Methode zum Sortieren von Schülern nach Alter und Namen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
import java.util.*; class Treeset { public static void main(String[] args) { TreeSet t = new TreeSet(); t.add(new student("a1",15)); t.add(new student("a2",15)); t.add(new student("a1",15)); t.add(new student("a3",16)); t.add(new student("a3",18)); for(Iterator it = t.iterator();it.hasNext();) { student tt = (student)it.next();//强制转成学生类型 sop(tt.getName()+","+tt.getAge()); } } public static void sop(Object obj) { System.out.println(obj); } } class student implements Comparable//接口让学生具有比较性 { private String name; private int age; student(String name,int age) { this.name = name; this.age = age; } public int compareTo(Object obj) { if(!(obj instanceof student)) throw new RuntimeException("不是学生"); student t = (student)obj; if(this.age > t.age) return 1; if(this.age==t.age) return this.name.compareTo(t.name);//如果年龄相同,在比较姓名排序 return -1; } public String getName() { return name; } public int getAge() { return age; } }
compareTo
int compareTo(T o)
Vergleicht die Reihenfolge dieses Objekts mit dem angegebenen Objekt. Wenn das Objekt kleiner, gleich oder größer als das angegebene Objekt ist, wird eine negative Ganzzahl, Null bzw. eine positive Ganzzahl zurückgegeben.
Die Implementierungsklasse muss sicherstellen, dass die Beziehung sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) für alle x und y existiert. (Das bedeutet, dass y.compareTo(x)
auch eine Ausnahme auslöst, wenn x.compareTo(y)
eine Ausnahme auslöst.)
Implementierende Klassen müssen außerdem sicherstellen, dass die Beziehung transitiv ist: (x.compareTo(y)> ;0 && y.compareTo(z)>0) bedeutet x.compareTo(z)>0.
Schließlich muss der Implementierer sicherstellen, dass x.compareTo(y)==0 bedeutet, dass für alle z sgn(x.compareTo(z)) == existiert sgn(y.compareTo(z)). (x.compareTo(y)==0) == (x.equals(y)) wird dringend empfohlen, ist aber nicht unbedingt erforderlich. Im Allgemeinen sollte jede Klasse, die die Comparable-Schnittstelle implementiert und gegen diese Bedingung verstößt, diesen Umstand deutlich angeben. Es wird empfohlen anzugeben: „Hinweis: Diese Klasse hat eine natürliche Reihenfolge, die nicht mit Gleichheit übereinstimmt.“
In der vorherigen Beschreibung gibt das Symbol sgn(expression)
die mathematische Signum-Funktion an, die davon abhängt, ob der Wert vorliegt Wenn der Ausdruck negativ, null oder eine positive Zahl ist, wird der Wert -1, 0 bzw. 1 zurückgegeben.
Parameter:
o – das zu vergleichende Objekt.
Rückgabe:
Eine negative Ganzzahl, Null oder eine positive Ganzzahl, abhängig davon, ob dieses Objekt kleiner, gleich oder größer als das angegebene Objekt ist.
Wirft aus:
ClassCastException – wenn der Typ des angegebenen Objekts einen Vergleich mit diesem Objekt nicht zulässt.
Das obige ist der detaillierte Inhalt vonBeispiel für die Verwendung von TreeSet zum Sortieren nach Alter und Name in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!