Sortieren von Java Basics TreeSet und Java Custom Types
TreeSet und benutzerdefinierte Java-Typsortierung
- Zeigt, dass TreeSet String sortieren kann.
- TreeSet kann keine benutzerdefinierten Typen sortieren. So schreiben Sie Vergleichsregeln. Selbstausgleichende Binärbaumstruktur. Implementierungs-Komparatorschnittstelle Collections-Tool-Klasse
- (kostenlose Lernempfehlung:
- Java Basic Tutorial
) zeigt, dass TreeSet nach String sortierbar ist 1. Die unterste Ebene der TreeMap-Sammlung ist tatsächlich Es ist eine TreeMap
2. Die unterste Ebene der TreeMap-Sammlung ist ein Binärbaum3. Die in der TreeSet-Sammlung platzierten Elemente entsprechen der Platzierung im Schlüsselteil der TreeMap-Sammlung 4. Die Elemente in der TreeSet-Sammlung sind ungeordnet und können nicht wiederholt werden, aber sie können nach den Elementen angeordnet werden. Die automatische Sortierung nach Größe
heißt: sortierbare Sammlung
Beispiel: Schreiben Sie ein Programm, um Daten aus der Datenbank abzurufen und Benutzerinformationen auf der Seite anzuzeigen Aufsteigende oder absteigende Reihenfolge des Geburtstags.
Zu diesem Zeitpunkt können Sie die TreeSet-Sammlung verwenden, da die TreeSet-Sammlung der Reihe nach eingefügt und herausgenommen wird. //创建一个TreeSet集合
TreeSet<string> ts=new TreeSet();
//添加Stringts.add("zhangsan");ts.add("lisi");ts.add("wangwu");ts.add("zhangsi");ts.add("wangliu");for(String s:ts){
//按照字典顺序排序
System.out.print(s+" ");
}
TreeSet<integer> ts2=new TreeSet();ts2.add(100);ts2.add(200);ts2.add(900);ts2.add(800); ts2.add(600);ts2.add(10);for(Integer i:ts2){
//按照升序排序
System.out.print(i+" ");}</integer></string>
TreeSet kann benutzerdefinierte Typen nicht sortieren
Kann TreeSet benutzerdefinierte Typen sortieren?
public class TreeSetTest02 {
public static void main(String[] args) {
Person p1=new Person(50);
Person p2=new Person(10);
Person p3=new Person(20);
Person p4=new Person(60);
Person p5=new Person(40);
Person p6=new Person(30);
TreeSet<person> persons=new TreeSet();
persons.add(p1);
persons.add(p2);
persons.add(p3);
persons.add(p4);
persons.add(p5);
persons.add(p6);
for(Person p:persons){
System.out.println(p);
}
}}class Person{
int age;
public Person(int age){
this.age=age;
}
@Override
public String toString() {
return "Person [age=" + age + "]";
}}</person>
Exception in thread "main" java.lang.ClassCastException: testCollection.Person cannot be cast to java.lang.Comparable
Person-Klasse die java.lang, Comparable-Schnittstelle nicht implementiert
//und die Methode „compareTo“ implementieren, „equals“ muss nicht geschrieben werden public class TreeSetTest04 {
public static void main(String[] args) {
Customer p1=new Customer(50);
Customer p2=new Customer(10);
Customer p3=new Customer(20);
Customer p4=new Customer(60);
Customer p5=new Customer(40);
Customer p6=new Customer(30);
TreeSet<customer> customers=new TreeSet();
customers.add(p1);
customers.add(p2);
customers.add(p3);
customers.add(p4);
customers.add(p5);
customers.add(p6);
for(Customer p:customers){
System.out.println(p);
}
}
}
//放在TreeSet集合中的元素需要实现java.lang.Comparable接口//并且实现compareTo方法,equals可以不写
class Customer implements Comparable<customer>{
int age;
public Customer(int age){
this.age=age;
}
@Override
public String toString() {
return "Customer [age=" + age + "]";
}
//需要在这个方法中编写比较的逻辑,或者说比较的规则,按照什么进行比较。
//k.compareTo(t.key)
//拿着参数k和集合中的每个k进行比较,返回值可能是>0,age2){// return 1;// }else{// return -1;// }
return this.age-c.age; //>,</customer></customer>
//Parameter k mit jedem k in der Menge vergleichen. Der Rückgabewert kann >0, //
Die Vergleichsregel wird weiterhin implementiert von Programmierer: Zum Beispiel in aufsteigender Reihenfolge nach Alter oder in absteigender Reihenfolge nach Alter
public class TreeSetTest05 { public static void main(String[] args) { TreeSet<vip> vips=new TreeSet(); vips.add(new Vip("zhangsi",20)); vips.add(new Vip("zhangsan",20)); vips.add(new Vip("king",18)); vips.add(new Vip("soft",17)); for(Vip vip:vips){ System.out.println(vip); } }}class Vip implements Comparable<vip>{ String name; int age; public Vip(String name,int age){ this.name=name; this.age=age; } @Override public String toString() { return "Vip [name=" + name + ", age=" + age + "]"; } //compareTo方法的返回值很重要: //返回0表示相同,value会覆盖 //>0,会继续在右子树上找 //Selbstausgleichende Binärbaumstruktur<p><br><br>1 .<br>Selbstausgleichender Binärbaum, gespeichert nach dem Prinzip von klein links und groß rechts<strong></strong> 2. Es gibt drei Möglichkeiten, einen Binärbaum zu durchlaufen</p> Durchquerung vorbestellen : linke und rechte Wurzeln<p> Durchquerung in der Reihenfolge: linke und rechte Wurzeln<strong> Durchquerung nach der Reihenfolge: linke und rechte Wurzeln</strong> Hinweis: Vorne, in der Mitte und hinten beziehen sich auf die Position der Wurzel</p> 3.<p>TreeSet-Sammlung und TreeMap Die Sammlung verwendet die In-Order-Traversal-Methode, d. h. die linke Wurzel und die rechte. Es handelt sich um selbstausgleichende Binärbäume </p> <p>Wir können die Methode der anonymen inneren Klasse verwenden<strong> Wir können die Methode der anonymen inneren Klasse verwenden (diese Klasse hat keinen Namen, direkt eine neue Schnittstelle)</strong></p> <pre class="brush:php;toolbar:false">public class TreeSetTest06 { public static void main(String[] args) { //创建TreeSet集合的时候,需要使用比较器 //TreeSet<wugui> wuGuis=new TreeSet(); //这样不行,没有通过构造方法传递一个比较器进去 TreeSet<wugui> wuGuis=new TreeSet(new WuguiComparator()); wuGuis.add(new Wugui(1000)); wuGuis.add(new Wugui(800)); wuGuis.add(new Wugui(900)); wuGuis.add(new Wugui(300)); wuGuis.add(new Wugui(60)); for(Wugui wugui:wuGuis){ System.out.println(wugui); } }}class Wugui{ int age; public Wugui(int age) { super(); this.age = age; } @Override public String toString() { return "Wugui [age=" + age + "]"; }}//单独再这里编写一个比较器//比较器实现java.util.Comparator接口(Comparable是java.lang包下的)class WuguiComparator implements Comparator<wugui>{ public int compare(Wugui o1,Wugui o2){ //指定比较规则 //按照年龄排序 return o1.age-o2.age; }}</wugui></wugui></wugui>
Die endgültige Schlussfolgerung ist, dass die Elemente im Schlüsselteil von TreeSet oder TreeMap platziert sind Die Sammlung muss sortiert werden, einschließlich zweier Methoden: Die erste: Die in der Sammlung platzierten Elemente implementieren die java.lang.Comparable-Schnittstelle. Die zweite: Übergeben Sie beim Erstellen der TreeSet- oder TreeMap-Sammlung ein Vergleichsobjekt daran. Wie wähle ich zwischen Comparable und Comparator?
Wenn sich die Vergleichsregeln nicht ändern oder wenn nur eine Vergleichsregel vorhanden ist, wird empfohlen, die Comparable-Schnittstelle zu implementieren.
Wenn mehrere Vergleichsregeln vorhanden sind und häufig zwischen mehreren Vergleichsregeln gewechselt werden muss, wird dies empfohlen Komparatorschnittstelle verwenden
Das Design der Komparatorschnittstelle entspricht den OCP-Prinzipien.
Collections-Werkzeugklasse
java.util.Collections-Sammlungswerkzeugklasse, die den Betrieb von Sammlungen erleichtertTreeSet<wugui> wuGuis=new TreeSet(new Comparator<wugui>(){public int compare(Wugui o1,Wugui o2){ //指定比较规则 //按照年龄排序 return o1.age-o2.age; }});</wugui></wugui>
Verwandte Lernempfehlungen:
Java-Grundlagen
Das obige ist der detaillierte Inhalt vonSortieren von Java Basics TreeSet und Java Custom Types. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

Spring Boot vereinfacht die Schaffung robuster, skalierbarer und produktionsbereiteter Java-Anwendungen, wodurch die Java-Entwicklung revolutioniert wird. Der Ansatz "Übereinkommen über Konfiguration", der dem Feder -Ökosystem inhärent ist, minimiert das manuelle Setup, Allo
