Aquí discutimos la clasificación de la lista, el conjunto y el mapa, incluida la clasificación por valor del mapa.
1) clasificación de listas
La clasificación de la lista puede usar directamente el método de clasificación de colecciones, o el método de clasificación de matrices. En el análisis final, las colecciones son llamar al método de clasificación de las matrices.
public static <t> void sort (list <t> list, comparator <? Super t> c) {objeto [] a = list.toarray (); Arrays.sort (a, (comparador) c); ListIterator i = list.ListIterator (); for (int j = 0; j <a.length; j ++) {I.Next (); I.Set (a [j]); }}Si es un objeto personalizado, debe implementar la interfaz comparable para que el objeto en sí tenga la función de "comparar". Por supuesto, también podemos usar Comparator externamente para especificar su clasificación.
Por ejemplo:
paquete com.fox; /** * @Author Huangfox * @Desc */Public Class Instemements implementos comparables <serem> {Nombre de cadena privada; edad privada int; Public User () {} Public User (String Name, Int Age) {super (); this.name = name; this.age = edad; } @Override public string toString () {return "name:" + name + ", edad:" + edad; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public int getAge () {return Age; } public void setAge (int Age) {this.age = edad; } @Override public int Compareto (usuario o) {if (o.age <this.age) return 1; else if (o.age> this.age) return -1; else regrese 0; } / ** * @param args * / public static void main (string [] args) {user u1 = new User ("Fox", 11); Usuario u2 = nuevo usuario ("Fox2", 21); System.out.println (U2.compareto (U1)); }}Ordenar por:
// List <Serem> US = New ArrayList <Serer> (); List <Serem> US = New LinkedList <Ser User> (); US.Add (nuevo usuario ("F5", 12)); US.Add (nuevo usuario ("F2", 22)); US.Add (nuevo usuario ("F3", 2)); US.Add (nuevo usuario ("f4", 14)); US.Add (nuevo usuario ("F5", 32)); US.Add (nuevo usuario ("f4", 12)); US.Add (nuevo usuario ("F7", 17)); US.Add (nuevo usuario ("F8", 52)); System.out.println (us.toString ()); Long Bt = System.nanotime (); Colección.sort (US, nuevo comparador <serem> () {@Override public int Compare (User O1, User O2) {if (o1.getage () <o2.getage ()) return -1; else if (o1.getage ()> o2.getAge ()) return 1; else return o1.getName (). Comparto (o2.getName ());}); Long et = System.nanotime (); System.out.println (et - bt); System.out.println (us.toString ());Por supuesto, aquí puede coleccionar y ordenar directamente (nosotros). El comparador se utiliza para optimizar el método de comparación del usuario Comparación (clasificación de personas de la misma edad según el nombre de usuario y la cadena de clasificación).
Para mencionar simplemente, la clasificación de matrices utiliza la clasificación de inserción y la clasificación de fusión, y la clasificación de inserción directamente cuando la longitud de la matriz es pequeña.
2) Establecer clasificando
El conjunto incluye hashset y TreeSet. Hashset se basa en hashmap y TreeSet se basa en Treemap.
Treemap se implementa utilizando árboles rojos y negros, y naturalmente tiene la función de clasificación. "Naturalmente tiene función de clasificación" significa que tiene iteradores en orden ascendente y descendente.
Entonces, ¿cómo clasificas hashset? Podemos convertir el hashset en una lista y ordenarlo con la lista.
Por ejemplo:
Establecer <Serem> US = New Hashset <Ser Usem> (); // set <serer> us = new TreeSet <serer> (); // set <serem> us = new TreeSet <serem> (New Comparator <Serem> () {// // @Override // public int Compare (user O1, user O2) {// if (o1.getage () <o2.getage () // return -1; // else if (o1.getage ()> o2.getage) // regreso 1; o1.getName (). CompareTo (o2.getName ()); US.Add (nuevo usuario ("F5", 12)); US.Add (nuevo usuario ("F2", 22)); US.Add (nuevo usuario ("F3", 2)); US.Add (nuevo usuario ("F4", 14)); US.Add (nuevo usuario ("F5", 32)); US.Add (nuevo usuario ("f4", 12)); US.Add (nuevo usuario ("F7", 17)); US.Add (nuevo usuario ("F8", 52)); // set -> list de matriz <serem> list = new ArrayList <Ser Usem> (US); System.out.println (lista); Colección.sort (lista); System.out.println (lista);También puede convertir hashset en una matriz y ordenarlo con matrices.
3) Clasificación de mapas
El mapa incluye hashmap y treemap. Como se mencionó anteriormente, Treemap se implementa con árboles rojos y negros y naturalmente tiene funciones de clasificación.
Entonces, ¿cómo se clasifica el hashmap por "clave"? El método es muy simple, use hashmap para construir un treemap.
Map <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 (new Treemap <String, Integer> (US));¿Cómo ordenar por "valor"?
// ordenar por valor establecido <Entry <String, Integer >> ks = us.entryset (); List <Entry <String, Integer >> list = new ArrayList <map.entry <string, integer >> (ks); Colección.sort (lista, nuevo comparador <Entry <String, Integer >> () {@Override public int Compare (Entry <String, Integer> O1, Entry <String, Integer> o2) {if (o1.getValue () <o2.getValue ()) return -1; else if (o1.getValue ()> o2.getvalue () return 1; System.out.println (lista);Proponga la entrada del mapa en una estructura establecida, luego convierta el conjunto en una lista y finalmente ordene de acuerdo con la lista.
La breve discusión anterior sobre el tema de clasificación en Java Collection es todo el contenido que comparto con ustedes. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.