Ici, nous discutons du tri de la liste, du set et de la carte, y compris le tri par valeur de carte.
1) Tri de liste
Le tri de liste peut utiliser directement la méthode de tri des collections, ou la méthode de tri des tableaux. En dernière analyse, les collections consiste à appeler la méthode de tri les tableaux.
public static <T> void Sort (liste <T> List, Comparator <? Super T> C) {objet [] a = list.toArray (); Arrays.Sort (A, (comparateur) C); ListIterator i = list.ListIterator (); pour (int j = 0; j <a.length; j ++) {i.next (); i.set (a [j]); }}S'il s'agit d'un objet personnalisé, vous devez implémenter l'interface comparable afin que l'objet lui-même ait la fonction de "comparer". Bien sûr, nous pouvons également utiliser le comparateur à l'extérieur pour spécifier son tri.
Par exemple:
package com.fox; / ** * @author Huangfox * @desc * / public class utilisateur implémente compaable <serving> {nom de chaîne privée; Âge privé; Utilisateur public () {} Utilisateur public (nom de chaîne, int age) {super (); this.name = name; this.age = âge; } @Override public String toString () {return "name:" + name + ", Âge:" + age; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public int getage () {return âge; } public void Setage (int Age) {this.age = age; } @Override public int compareto (utilisateur o) {if (o.age <this.age) return 1; else if (o.age> this.age) return -1; else return 0; } / ** * @param args * / public static void main (String [] args) {user u1 = new User ("Fox", 11); Utilisateur U2 = nouvel utilisateur ("FOX2", 21); System.out.println (u2.compareto (U1)); }}Trier par:
// list <ser user> us = new ArrayList <serser> (); List <ser user> us = new LinkedList <serser> (); us.add (nouvel utilisateur ("F5", 12)); us.add (nouvel utilisateur ("f2", 22)); us.add (nouvel utilisateur ("F3", 2)); us.add (nouvel utilisateur ("F4", 14)); us.add (nouvel utilisateur ("f5", 32)); us.add (nouvel utilisateur ("F4", 12)); us.add (nouvel utilisateur ("F7", 17)); us.add (nouvel utilisateur ("F8", 52)); System.out.println (us.toString ()); long bt = System.NanoTime (); CollectionS.Sort (US, nouveau comparateur <server> () {@Override public int compare (utilisateur o1, utilisateur o2) {if (o1.getage () <o2.getage ()) return -1; else if (o1.getage ()> o2.getage ()) return 1; else o1.getName (). Compareto (o2.GetName ());}}); long et = System.NanoTime (); System.out.println (et - bt); System.out.println (us.toString ());Bien sûr, ici, vous pouvez recueillir et trier directement (nous). Le comparateur est utilisé pour optimiser la propre méthode de comparaison de l'utilisateur Comparento (trier les personnes du même âge en fonction du nom d'utilisateur et de la chaîne de tri).
Pour mentionner simplement, le tri des tableaux utilise le tri et le tri de fusion d'insertion et le tri d'insertion directement lorsque la longueur du tableau est petite.
2) Définir le tri
L'ensemble comprend Hashset et Treeset. Hashset est basé sur Hashmap et Treeset est basé sur Treemap.
Treemap est implémenté à l'aide d'arbres rouges et noirs et a naturellement une fonction de tri. "Naturellement, la fonction de tri" signifie qu'il a des itérateurs dans l'ordre croissant et descendant.
Alors, comment triez-vous Hashset? Nous pouvons convertir le hashset en une liste et le trier avec la liste.
Par exemple:
Set <ser user> us = new HashSet <ser user> (); // set <ser user> us = new TreeSet <Serser> (); // set <User> us = new TreeSet <User> (new Comparator <User> () {// // @Override // public int compare (utilisateur o1, utilisateur o2) {// if (o1.getage () <o2.getage ()) // return -1; // else if (o1.getage ()> o2.getage ()) // return 1; // else // return 1; o1.getName (). Compareto (o2.GetName ()); us.add (nouvel utilisateur ("F5", 12)); us.add (nouvel utilisateur ("f2", 22)); us.add (nouvel utilisateur ("F3", 2)); us.add (nouvel utilisateur ("F4", 14)); us.add (nouvel utilisateur ("f5", 32)); us.add (nouvel utilisateur ("F4", 12)); us.add (nouvel utilisateur ("F7", 17)); us.add (nouvel utilisateur ("F8", 52)); // set -> array list <serv> list = new ArrayList <User> (US); System.out.println (liste); Collection.Sort (liste); System.out.println (liste);Vous pouvez également convertir Hashset en un tableau et le trier avec des tableaux.
3) Tri de cartes
La carte comprend Hashmap et Treemap. Comme mentionné ci-dessus, Treemap est implémenté avec des arbres rouges et noirs et a naturellement des fonctions de tri.
Alors, comment triez-vous Hashmap par "Key"? La méthode est très simple, utilisez Hashmap pour construire un Treemap.
Map <string, entier> us = new hashmap <String, Integer> (); // map <string, entier> 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));Comment trier par "valeur"?
// Trier par valeur set <entrée <string, entier >> ks = us.entryset (); List <entrée <string, entier >> list = new ArrayList <map.entry <string, entier >> (ks); Collection.Sort (List, nouveau comparateur <entrée <chaîne, entier >> () {@Override public int compare (entrée <chaîne, entier> o1, entrée <string, entier> o2) {if (o1.getValue () <O2.GetValue ()) return -1; else if (o1.getValue ()> o2.tre. System.out.println (liste);Proposer l'entrée de la carte dans une structure de jeu, puis convertir l'ensemble en liste, et enfin le trier selon la liste.
La brève discussion ci-dessus sur le problème de tri dans la collection Java est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.