Diese Frage führt wie folgt zwei Sort () -Methoden der Sammlungs -Toolklasse ein:
1. zwei Sort () -Methoden der Sammlungs -Toolklasse
Format 1: Öffentliche statische <t erweitert vergleichbar <? Super t >> void sortieren (Liste <T> Liste)
HINWEIS: Die Generika <T> in dieser Methode sind alle Unterklassen der vergleichbaren Schnittstelle, dh nur Daten des vergleichbaren Schnittstellen -Unterklassentyps können verglichen und sortiert werden. Wenn andere Datenarten verglichen und sortiert werden sollen, muss die vergleichbare Schnittstelle vererbt werden und
Überschreibung Equals () und vergleicheto () -Methoden. Unter ihnen sind die String -Klasse und die Ganzzahlklasse beide vergleichbare Schnittstellenunterklassen und können sortiert werden, während Grundtypen nicht sortiert werden können. Vergleichselemente werden in der Klasse angegeben
Format 2: öffentliche statische <t> void -Sortierung (Liste <T> Liste, Vergleicher <? Super T> C)
Hinweis: Diese Methode gibt den Vergleichsmethodenvergleich <? Super t> c, das heißt, C muss den Komparator <? Super t> Schnittstelle, überschreiben Sie die Vergleiche () -Methode, um das Vergleichselement anzugeben. Vergleichselemente werden außerhalb der Klasse angegeben, was flexibler ist
2. Beispiel
Häufige Möglichkeiten, Strings und Zahlen im Beispiel zu erhalten:
/ *** Generieren Sie zufällige und nicht repetitive Zeichenfolgen: Nummer generieren Sie Anzahl der Zeichenfolgen*/ public staticlist <string> Generatestring (int-Nummer) {list <string> listString = new ArrayList <> (); // Wird verwendet, um die Rückgabewertliste zu speichern <Integer> Länge = NULL; // String Länge stringBuffer sb = new StringBuffer (); // mittlere Variable int Control = 0; // Kontrollnummer String [] chars = new String [] {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", " "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "B", "C", "D", "E", "F", "G", "H", "O", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ", "S", "T", "U", "V", "W", "X", "Y", "Z"}; while (true) {// Ende der Steuerung if (control == number) {break; } // eine zufällige Zahl erstellen und 36-Bit 2AAAB761-4341-4968-ACE-3861EE3824B2 UUID-Typ Daten String uUid = Uuid.randomuuid (). ToString (). Ersatz ("-", ","); sb.setLength (0); // Die Länge einer zufälligen Zeichenfolge abrufen, die Länge ist nicht 0 do {Länge = getDiffno (1, 11); } while (Länge.get (0) == 0); // zusammenpatch String für (int i = 0; i <length.get (0); i ++) {String str = uUid.substring (i*3, (i*3+3)); // Die STR -String in hexadezimal konvertieren und ihren Wert int x = Integer.ParseInt (STR, 16) erhalten; // den Rest erhalten: x % 0x3e--0x3e = 3*16 + 14 = 62, wobei Zeichen 62 Zeichen sb.Append (chars [x % 0x3e]); } listString.add (sb.toString ()); Kontrolle ++; } return listString; }/ *** Zufällige und nicht repetitive Zahlen generieren: n generieren Zahlen max generieren Bereich*/ public staticliste <Integer> getDiffno (int n, int max) {// generieren [0-n] Nicht-repetitive zufällige Nummern // Liste, mit der diese Zufallszahlenliste <Integer> list = new Arraylist <> () verwendet wird; Random random = new random (); Ganzzahl K; für (int i = 0; i <n; i ++) {do {k = random.nextint (max); } while (list.contains (k)); list.add (k); } Rückgabeliste; } 1. Sortieren Sie die Liste der Ganzzahl -Generika
/*** 1. Sortieren Sie die Liste der Ganzzahl -Generika über die methode sorts.sort (); * Erstellen Sie eine Liste von ganzzahligen Generika, fügen Sie zehn nicht repetitive zufällige Ganzzahlen innerhalb von 100 ein und rufen Sie die Sammlung an. System.out.println("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- integer : integerList) { System.out.println ("Element:" + Integer); System.out.println ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- große ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2. Sortieren Sie die Liste der String -Generika
/*** 1. Sortieren Sie die Liste der String -Generika; Erstellen Sie eine Liste von String-Generika, fügen Sie ausdrückliche Zeichenfolgenelemente hinzu, * rufen Sie die Sortiermethode auf und geben Sie die Sortierreihenfolge erneut aus */ public void listStringsort () {list <string> stringlist = new ArrayList <string> (); stringList.add ("eipjlcx"); stringList.add ("wvqrufc"); StringList.add ("j"); stringList.add ("Hdau2g"); StringList.Add ("M0WSWHD3"); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- / *** Sortieren Sie die Liste der String-Generika, die eine zufällige Erzeugung von 10 nicht repetitiven Zeichenfolgen erfordert, und die Länge der Zeichenfolge liegt innerhalb von 10*/ public void liststringrandomsort () {// erzeugen zufällige String-Liste <string> liststring = Generatestring (10); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println ("----------------------------------------------------------------------------------------------------------------------------------------------------------3. Sortieren Sie die Liste anderer Arten von Generika
Kursklassenimplementierung
/** * Kursklasse * @Author Administrator * */öffentlicher Klassenkurs {public String id; öffentlicher String -Name; öffentlicher Kurs (String -ID, String -Name) {this.id = id; this.name = name; } public cours () {} @Override public int hashCode () {final int prime = 31; int result = 1; result = prime * result + ((name == null)? 0: name.hashcode ()); Rückgabeergebnis; } @Override public boolean Equals (Objekt obj) {if (this == obj) return true; if (obj == null) return false; if (! (obj Instance von Kurs)) Return Falsch; Kurs Andere = (Kurs) obj; if (name == null) {if (other.name! = null) return false; } else if (! name.equals (other.name)) return false; zurückkehren; }} Die Schülerklasse implementiert eine vergleichbare Schnittstelle und legt Vergleichselemente innerhalb der Klasse fest
import Java.util.hashset; import Java.util.set;/** * Schülerklasse * @Author Administrator * */Public Class Student Implements vergleichbar <Student> {public String id; öffentlicher String -Name; öffentliche Set <Kurs> Kurse; public student (String -ID, String -Name) {this.id = id; this.name = name; this.courses = new Hashset <Kurs> (); } @Override public int HashCode () {final int prime = 31; int result = 1; result = prime * result + ((name == null)? 0: name.hashcode ()); Rückgabeergebnis; } @Override public boolean Equals (Objekt obj) {if (this == obj) return true; if (obj == null) return false; if (! (obj Instance von Student)) return falsch; Student Andere = (Student) obj; if (name == null) {if (other.name! = null) return false; } else if (! name.equals (other.name)) return false; zurückkehren; } @Override public int vergleicheto (student o) {// ID als Vergleichselement festlegen // Todo automatisch generierte Methode Stub return this.id.comPareto (O.ID); }} Implementieren Sie die Komparator -Schnittstelle und setzen Sie Vergleichselemente außerhalb der Klasse
Importieren java.util.comParator; öffentliche Klasse studentComparator implementiert vergleicher <student> {@Override public int compare (Student O1, Student O2) {// Todo Auto-Generated-Methode Stub Return O1.Name.comPareto (O2.Name); }} Vergleich der Schülerklassen
/*** Sortieren Sie Listen anderer Arten von Generika und nehmen die Schüler als Beispiel. */ public void listComparatorsOrT () {list <Sudest> studentList = new ArrayList <Studenten> (); List <Integer> list = getDiffno (4, 1000); studentList.add (neuer Student (list.get (0) + "", "mike"); studentList.add (neuer Student (List.get (1) + "", "Angela"); studentList.add (neuer Student (List.get (2) + "", "Lucy"); studentList.add (neuer Student (1000 + "," Beyonce "); System.out.println("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println ("Student:" + student.id + ":" + student.name); System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.