Este artículo describe dos métodos de implementación para la clasificación personalizada de Java para ArrayList. Compártelo para su referencia, como sigue:
Implementar la clasificación personalizada de listas en Java utiliza principalmente dos formas
1) Deje que la clase del objeto que debe ordenarse implementa la interfaz comparable, anule el método Compareto (To) y defina las reglas de clasificación en él. Entonces puede llamar directamente a colección.sort () para ordenar la matriz de objetos
El estudiante de clase pública implementa comparable {private int id; edad privada int; Altura privada int; nombre de cadena privada; Estudiante público (int id, nombre de cadena, int Age, int altura) {this.id = id; this.name = name; this.age = edad; this.Height = altura; } public int getId () {return id; } public int getAge () {return Age; } public int getheight () {altura de retorno; } public String getName () {nombre de retorno; } public void setid (int id) {this.id = id; } public void setAge (int Age) {this.age = edad; } public void setName (nombre de cadena) {this.name = name; } public void setheight (int altura) {this.height = altura; } @Override public int Compareto (objeto o) {estudiante s = (estudiante) o; if (this.age> s.age) {return 1; } else if (this.age <s.age) {return -1; } else {if (this.height> = s.height) {return 1; } else {return -1; }}}}Clase de prueba:
import java.util.*; Prueba de clase pública {public static void printData (List <deude> list) {for (Student Student: List) {System.out.Println ("Número de estudiante:" + Student.getID () + "Nombre:" + Student.getName () + "Age" + Student.getage () + "Height:" + Student.Getheight ()); }} public static void main (string [] args) {list <diest> list = new ArrayList <> (); list.add (nuevo estudiante (1, "A", 20, 180)); list.add (nuevo estudiante (2, "B", 21, 175)); list.add (nuevo estudiante (3, "C", 22, 190)); list.add (nuevo estudiante (4, "d", 21, 170)); list.add (nuevo estudiante (5, "E", 20, 185)); System.out.println ("antes de ordenar"); printData (lista); Colección.sort (lista); System.out.println ("después de la edad y la altura ordenadas"); printData (lista); }}resultado:
Antes de ordenar número de alumno: 1 Nombre: A Edad 20 Altura: 180 Número de alumno: 2 Nombre: B Edad 21 Altura: 175 Número de alumno: 3 Nombre: C Edad 22 Altura: 190 Número de alumno: 4 Nombre: D Edad 21 Altura: 170 Estudiante Número: 5 Nombre: E Edad 20 Altura: 185 después de la edad y altura Número de alumno Ordenal: 1 Nombre: A de edad 20 Edad 20. Nombre: B Edad 21 Altura: 175 Número de estudiante: 3 Nombre: C Edad 22 Altura: 190
2) Implemente el comparador de la interfaz de comparación, reescribe el método de comparación y lo pase como un parámetro
Estudiante de clase pública {private int id; edad privada int; Altura privada int; nombre de cadena privada; Estudiante público (int id, nombre de cadena, int Age, int altura) {this.id = id; this.name = name; this.age = edad; this.Height = altura; } public int getId () {return id; } public int getAge () {return Age; } public int getheight () {altura de retorno; } public String getName () {nombre de retorno; } public void setid (int id) {this.id = id; } public void setAge (int Age) {this.age = edad; } public void setName (nombre de cadena) {this.name = name; } public void setheight (int altura) {this.height = altura; }}Clase de prueba:
import java.util.*; Prueba de clase pública {public static void printData (List <deude> list) {for (Student Student: List) {System.out.Println ("Número de estudiante:" + Student.getID () + "Nombre:" + Student.getName () + "Age" + Student.getage () + "Height:" + Student.Getheight ()); }} public static void main (string [] args) {list <diest> list = new ArrayList <> (); list.add (nuevo estudiante (1, "A", 20, 180)); list.add (nuevo estudiante (2, "B", 21, 175)); list.add (nuevo estudiante (3, "C", 22, 190)); list.add (nuevo estudiante (4, "d", 21, 170)); list.add (nuevo estudiante (5, "E", 20, 185)); System.out.println ("antes de ordenar"); printData (lista); Colección.sort (List, New Comparator <entudent> () {@Override public int Compare (Student O1, Student O2) {if (o1.getage ()> = o2.getage ()) {return 1;} else {return -1;}}}); System.out.println ("después de la edad ordenada"); printData (lista); Colección.sort (List, New Comparator <deude> () {@Override public int Compare (Student O1, Student O2) {if (o1.getage ()> o2.getage ()) {return 1;} else if (o1.getage () <o2.getage ()) {return -1;} else {if (o1.getheight ()> = o2.getheEtch () else {return -1; System.out.println ("después de la edad y la altura ordenadas"); printData (lista); }}Resultado de salida:
ANTERIZADO DE LA ESTUDIANTE NÚMERO DE ESTUDIANTE: 1 Nombre: A Edad 20 Altura: 180 Número de estudiante: 2 Nombre: B Edad 21 Altura: 175 Número de alumno: 3 Nombre: C Edad 22 Altura: 190 Número de alumno: 4 Nombre: D Edad 21 Altura: 170 Número de alumno: 5 Nombre: E Edad 20 Altura: 185 Aparte de Edad Número de estudiante: 1 Nombre: A de edad 20 Edad 20. Edad 21 Altura: 170 Número de alumno: 3 Nombre: C Edad 22 Altura: 190 Después de la edad y altura Número de alumno ordenado: 1 Nombre: A Edad 20 Altura: 180 Número de alumno: 5 Nombre: E Edad 20 Altura: 185 Estudiante Número: 4 Nombre: D 21 Altura: 170 Número de alumno: 2 Nombre: B Edad 21 Altura: 175 Número de alumno: 3 Nombre: C 22 Altura: 190: 190
De los ejemplos anteriores, podemos ver que la clasificación es estable. Miré el código fuente de Java Collections.sort . De hecho, se implementa en función de la clasificación y clasificación de fusión estable. También se ha optimizado internamente, llamado Timsort. (Para Timsort, consulte https://baike.baidu.com/item/timsort?fr=aladdin)
PD: Aquí hay una herramienta de demostración para su referencia:
Demostración de animación en línea Insertar/Select/Bubble/Merge/Hill/Quick Sorting Algorithm Tool Tool:
http://tools.vevb.com/aideddesign/paixu_ys
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.