Hier diskutieren wir die Sortierung von Liste, Set und Karte, einschließlich der Sortierung nach Kartenwert.
1) Sortierung auflisten
Die Listensortierung kann direkt die Sortiermethode der Sammlungen oder die Sortiermethode der Arrays verwenden. Letztendlich wird Sammlungen die Sortiermethode von Arrays aufrufen.
public static <t> void sortieren (Liste <T> Liste, Vergleiche <? Super t> c) {Objekt [] a = list.toArray (); Arrays.sort (a, (vergleicher) c); ListIterator i = list.listIterator (); für (int j = 0; j <A.Length; j ++) {i.Next (); I.Set (a [j]); }}Wenn es sich um ein benutzerdefiniertes Objekt handelt, müssen Sie die vergleichbare Schnittstelle so implementieren, dass das Objekt selbst die Funktion "Vergleichen" hat. Natürlich können wir den Komparator auch extern verwenden, um seine Sortierung anzugeben.
Zum Beispiel:
Paket com.fox; /** * @Author Huangfox * @Desc */Public Class User implementiert vergleichbar <Benutzer> {private Zeichenfolge Name; privates int Alter; public user () {} public user (String name, int age) {super (); this.name = name; this.age = Alter; } @Override public String toString () {return "Name:" + name + ", Alter:" + Alter; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public int getage () {return ay; } public void setage (int age) {this.age = älter; } @Override public int vergleicheto (Benutzer o) {if (o.age <this.age) return 1; sonst wenn (o.age> this.age) return -1; sonst return 0; } / ** * @param args * / public static void main (string [] args) {user u1 = neuer user ("fox", 11); Benutzer u2 = neuer Benutzer ("fox2", 21); System.out.println (u2.comPareto (u1)); }}Sortieren durch:
// LIST <Bener> us = new ArrayList <Bers> (); LIST <BENE> us = new LinkedList <Bener> (); US.ADD (neuer Benutzer ("F5", 12)); US.ADD (neuer Benutzer ("F2", 22)); US.ADD (neuer Benutzer ("F3", 2)); US.ADD (neuer Benutzer ("F4", 14)); US.ADD (neuer Benutzer ("F5", 32)); US.ADD (neuer Benutzer ("F4", 12)); US.ADD (neuer Benutzer ("F7", 17)); US.ADD (neuer Benutzer ("F8", 52)); System.out.println (US.ToString ()); langes bt = system.nanotime (); Collectionss.sort (US, New Comparator <Ders> () {@Override public int compare (Benutzer O1, Benutzer O2) {if (o1.getage () <o2.Getage () return -1; else if (o1.getage ()> o2.getage () return 1; sonst return o1.getnname (). long et = System.nanotime (); System.out.println (et - bt); System.out.println (US.ToString ());Natürlich können Sie hier (uns) direkt sammeln und sortieren. Der Komparator wird verwendet, um die eigene Vergleichsmethode des Benutzers zu optimieren (sortieren Personen im gleichen Alter nach Benutzername und Sortierzeichenfolge).
Um einfach zu erwähnen, Arrays Sorting verwendet Insertionssortier- und Zusammenführungssortierungen und Einfügungssortierung direkt, wenn die Arraylänge klein ist.
2) Sortieren einstellen
Das Set enthält Hashset und Treeset. Hashset basiert auf HashMap und Treeset basiert auf Treemap.
Treemap wird mit roten und schwarzen Bäumen implementiert und hat natürlich Sortierfunktion. "Natürlich hat die Sortierfunktion", dass es Iteratoren in aufsteigender und absteigender Reihenfolge hat.
Wie sortierst du Hashset? Wir können das Hashset in eine Liste konvertieren und es mit der Liste sortieren.
Zum Beispiel:
Set <Bener> us = new Hashset <Benetzes> (); // set <user> us = new treeset <Benetzes> (); // set <user> us = new treeset <Benetzes> (neuer Vergleiche <Benetzwerte> () {// // @override // public int compare (Benutzer O1, Benutzer O2) {// if (o1.getage () <O2.Getage () // return -1; // i1.getage ()> O2.Getage () //) // return 1; O1.getName (). Vergleiche (O2.GetName ()); US.ADD (neuer Benutzer ("F5", 12)); US.ADD (neuer Benutzer ("F2", 22)); US.ADD (neuer Benutzer ("F3", 2)); US.ADD (neuer Benutzer ("F4", 14)); US.ADD (neuer Benutzer ("F5", 32)); US.ADD (neuer Benutzer ("F4", 12)); US.ADD (neuer Benutzer ("F7", 17)); US.ADD (neuer Benutzer ("F8", 52)); // set -> Arrayliste <Unters> list = new ArrayList <Bers> (US); System.out.println (Liste); Sammelns.sort (Liste); System.out.println (Liste);Sie können Hashset auch in ein Array umwandeln und es mit Arrays sortieren.
3) Kartensortierung
Die Karte enthält Hashmap und Treemap. Wie oben erwähnt, wird Treemap mit roten und schwarzen Bäumen implementiert und hat natürlich Sortierfunktionen.
Wie sortiert man Hashmap nach "Schlüssel"? Die Methode ist sehr einfach. Verwenden Sie HashMap, um ein Treemap zu konstruieren.
Karte <String, Integer> us = New HashMap <String, Integer> (); // map <String, Integer> us = new Treemap <String, Integer> (); US.put ("F1", 12); US.put ("F2", 13); US.put ("F5", 22); US.put ("F4", 42); US.put ("F3", 15); US.put ("F8", 21); US.put ("F6", 123); US.put ("F7", 1); US.put ("F9", 19); System.out.println (US.ToString ()); System.out.println (neue Treemap <String, Integer> (US));Wie sortiere ich nach "Wert"?
// nach Wertset sortieren <Eintrag <String, Integer >> ks = us.EntrySet (); Liste <Eintrag <String, Integer >> list = new ArrayList <map.Entry <String, Integer >> (ks); Collectionss.sort (Liste, neuer Vergleicher <Eintrag <String, Integer >> () {@Override public int compare (Eintrag <String, Integer> O1, Eintrag <String, Integer> O2) {if (o1.getValue () <O2.getValue () zurücksend -1; System.out.println (Liste);Schlagen Sie den Eintrag der Karte in eine festgelegte Struktur vor, konvertieren Sie die SET in eine Liste und sortieren Sie sie schließlich nach der Liste.
Die obige kurze Diskussion über das Sortierproblem in der Java -Sammlung ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.