Vorwort
Die Listenschnittstelle im Java.util -Paket erbt die Sammlungsschnittstelle und wird zum Speichern von Objektsammlungen verwendet. Wenn Sie diese Objekte sortieren, kann entweder die Objektklasse dasselbe Objekt selbst vergleichen oder den Vergleiche verwenden, um Vergleich und Sortierung durchzuführen.
Student Entity -Klasse, einschließlich Namen und Altersattribute, wird beim Vergleich in den Namen sortiert, und wenn die Namen gleich sind, wird sie in einem aufsteigender Reihenfolge im Alter sortiert.
Der erste Typ: Vergleich von Entitätsklassen selbst
(Implementieren Sie die vergleichbare Schnittstelle: public interface Comparable<T> , es gibt eine Methodeerklärung: public int compareTo(T o); )
Beispielcode:
Schüler der öffentlichen Klasse implementiert vergleichbar <Student> {privater String -Name; privates int Alter; public student () {super (); // todo automatisch generierter Konstruktor Stub} Public Student (String-Name, int age) {Super (); this.name = name; this.age = 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 (student o) {// Todo automatisch generierte Methode Stub int flag = this.name.comPareto (O.Name); if (flag == 0) {flag = this.age - o.age; } Rückkehrflag; }} Verwenden Sie dann sort(Comparator<? super E> c) der Listklasse oder sort(List<T> list) der java.util.Collections -Toolklasse (eigentlich steckt nur einen Satz darin: list.sort(null); ) sortieren:
LIST <Student> students = new ArrayList <Student> (); Studenten.Add (neuer Schüler ("a", 10)); Studenten.Add (neuer Schüler ("B", 12)); Studenten.Add (neuer Schüler ("B", 11)); Studenten.Add (neuer Schüler ("AC", 20)); students.sort (null); //Collections.sort(students); Ergebnis:
A 10 AC 20 B 11 B 12
Der zweite Typ: Sortieren Sie mit Hilfe eines Komparators.
Beispielcode:
Student der öffentlichen Klasse {privater String -Name; privates int Alter; public student () {super (); // todo automatisch generierter Konstruktor Stub} Public Student (String-Name, int age) {Super (); this.name = name; this.age = 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; }} Die Komparatorin java.util.Comparator ist eine Schnittstelle ( public interface Comparator<T> ), die int compare(T o1, T o2); und andere Methoden:
Unser Komparator möchte diese Schnittstelle implementieren und compare implementieren:
private class studentComparator implementiert vergleicher <student> {@override public int compare (Student O1, Student O2) {// Todo automatisch generierte Methode Stub int flag = o1.getName (). vergleicheto (o2.getName ()); if (flag == 0) {flag = o1.getage () - o2.getage (); } Rückkehrflag; }} Beim Vergleich können Sie die sort(Comparator<? super E> c) der Methode der java.util.Collections -Toolklasse sort(List<T> list, Comparator<? super T> c) Methode, um zu sortieren.
LIST <Student> students = new ArrayList <Student> (); Studenten.Add (neuer Schüler ("a", 10)); Studenten.Add (neuer Schüler ("B", 12)); Studenten.Add (neuer Schüler ("B", 11)); Studenten.Add (neuer Schüler ("AC", 20)); Test t = neuer Test (); students.sort (T.New studentComparator ()); //Collections.sort(students, T.New studentComparator ()); für (Student: Student: Studenten) {System.out.println (student.getName ()+""+student.getage ()); } Das Ergebnis ist das gleiche wie die erste Methode:
A 10 AC 20 B 11 B 12
Zusammenfassen
Im obigen dreht sich alles um die Sortierliste in Java. Ich hoffe, dass der Inhalt dieses Artikels für das Studium oder die Arbeit eines jeden hilfreich sein wird. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.