Cette question présente deux méthodes de tri () de la classe d'outils de collections, comme suit:
1. Deux méthodes de tri () de la classe d'outils de collections
Format 1: le public statique <t s'étend comparable <? Super T >> Sort void (liste <T> Liste)
Remarque: Les génériques <T> dans cette méthode sont tous des sous-classes de l'interface comparable, c'est-à-dire que seules les données du type de sous-classe d'interface comparable peuvent être comparées et triées. Si d'autres types de données doivent être comparés et triés, l'interface comparable doit être héritée et
Override equals () et compareto () Méthodes. Parmi eux, la classe String et la classe entière sont à la fois des sous-classes d'interface comparables et peuvent être triées, tandis que les types de base ne peuvent pas être triés. Les éléments de comparaison sont spécifiés dans la classe
Format 2: Sort public STATIC <T> VOID (Liste <T> Liste, Comparateur <? Super T> C)
Remarque: Cette méthode spécifie le comparateur de méthode de comparaison <? Super T> C, c'est-à-dire C doit implémenter le comparateur <? Interface Super T>, remplacer la méthode compareto () pour spécifier l'élément de comparaison. Les éléments de comparaison sont spécifiés en dehors de la classe, ce qui est plus flexible
2. Exemple
Les moyens courants d'obtenir des chaînes et des nombres dans l'exemple:
/ ** * Générer des chaînes aléatoires et non apétitives: Numéro Génération du nombre de chaînes * / public static list <string> generateString (int // Utilisé pour stocker la liste des valeurs de retour <Integer> Longueur = NULL; // string longueur stringBuffer sb = new StringBuffer (); // variable intermédiaire int Control = 0; // Numéro de contrôle 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", "i", "j", "k", ",", "," "" "" "" "" "" "" "S", "t", "u", "v", "w", "x", "y", "z"}; while (true) {// fin de contrôle if (contrôle == numéro) {break; } // générer un nombre aléatoire et générer 26 bits 2AAAB761-4341-4968-ACEB-3861EE3824B2 Type UUID String de données UUID = UUID.RandomuUid (). ToString (). Remplace ("-", ""); sb.setLength (0); // obtient la longueur d'une chaîne aléatoire, la longueur n'est pas 0 do {longueur = getDiffno (1, 11); } while (long.get (0) == 0); // patch ensemble string for (int i = 0; i <longueur.get (0); i ++) {string str = uuid.substring (i * 3, (i * 3 + 3)); // Convertir la chaîne STR en hexaDecimal et obtenir sa valeur int x = Integer.ParseInt (Str, 16); // Obtenez le reste: x% 0x3e - 0x3e = 3 * 16 + 14 = 62, où Chars a 62 caractères SB.APPEND (Chars [x% 0x3e]); } listString.add (sb.toString ()); contrôle ++; } return listString; } / ** * Générer des nombres aléatoires et non apétitifs: n générer des nombres max génèrent la plage * / public static list <Integer> getDiffno (int n, int max) {// générer [0-n] nombres aléatoires non réévititifs // listes utilisées pour enregistrer ces nombres aléatoires Liste <Integer> list = new ArrayList <> (); Aléatoire aléatoire = nouveau aléatoire (); Entier k; pour (int i = 0; i <n; i ++) {do {k = random.nextint (max); } while (list.contains (k)); list.add (k); } Retour List; } 1. Triez la liste des génériques entiers
/ ** * 1. Triez la liste des génériques entiers via la méthode Collection.Sort (); * Créez une liste de génériques entiers, insérez dix entiers aléatoires non répétitifs dans les 100 et appelez la méthode des collections.sort () pour les trier * 2. Triez les règles: premier numéro puis lettres, numéros 0-9, l'ordre des lettres az az * / public void listinetegersort () {// insert dix entières non repetives au sein de 100); System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println ("élément:" + entier);} Collection.Sort (IntegerList); System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2. Triez la liste des génériques de chaînes
/ ** * 1. Triez la liste des génériques de chaînes; Créer une liste de génériques de chaînes, ajouter des éléments de chaîne hors commande, * Appelez la méthode de tri et sortit à nouveau l'ordre de tri * / 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 ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- / ** * Triez la liste des génériques de chaînes, nécessitant une génération aléatoire de 10 chaînes non répétitives, et la longueur de la chaîne se situe dans 10 * / public void ListStringRandomsort () {// Générer la liste de chaînes aléatoires <string> listString = GenerAtString (10); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println ("-----------------------------------------------------");3. Trier la liste d'autres types de génériques
Implémentation de cours de cours
/ ** * Classe de cours * @Author Administrator * * / public class Course {public String id; nom de chaîne publique; Cours public (String id, nom de chaîne) {this.id = id; this.name = name; } public Course () {} @Override public int hashcode () {final int prime = 31; Int résultat = 1; result = prime * result + ((name == null)? 0: name.hashcode ()); Résultat de retour; } @Override public boolean equals (objet obj) {if (this == obj) return true; if (obj == null) return false; if (! (obj instance de cours)) renvoie false; Cours autres = (cours) obj; if (name == null) {if (autre.name! = null) return false; } else if (! name.equals (autre.name)) renvoie false; Retour Vrai; }} La classe étudiante implémente une interface comparable et définit des éléments de comparaison au sein de la classe
import java.util.hashset; import java.util.set; / ** * classe étudiante * @Author Administrator * * / public class Student implémente <Student> {public String id; nom de chaîne publique; Public Set <Course> Cours; Étudiant public (String id, nom de chaîne) {this.id = id; this.name = name; this.Courses = new HashSet <amours> (); } @Override public int hashcode () {final int prime = 31; Int résultat = 1; result = prime * result + ((name == null)? 0: name.hashcode ()); Résultat de retour; } @Override public boolean equals (objet obj) {if (this == obj) return true; if (obj == null) return false; if (! (obj instance of Student)) renvoie false; Étudiant autre = (étudiant) obj; if (name == null) {if (autre.name! = null) return false; } else if (! name.equals (autre.name)) renvoie false; Retour Vrai; } @Override public int compareto (Student O) {// set id as comparaison item // todo meto-généré par le talon de méthode return this.id.compareto (o.id); }} Implémentez l'interface du comparateur et définissez des éléments de comparaison en dehors de la classe
Importer java.util ..Parator; public class Studentcomparator implémente le comparateur <Student> {@Override public int compare (étudiant o1, étudiant o2) {// todo metodated wethod Stub return o1.name ........ }} Comparer les cours des élèves
/ ** * Trier les listes d'autres types de génériques, en prenant l'étudiant comme exemple. * / public void listcomparatorsort () {list <Student> StudentList = new ArrayList <Student> (); List <Integer> list = getDiffno (4, 1000); StudentList.Add (New Student (list.get (0) + "", "Mike")); StudentList.Add (New Student (list.get (1) + "", "Angela")); StudentList.Add (New Student (list.get (2) + "", "Lucy")); StudentList.Add (New Student (1000 + "", "Beyonce")); System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println ("Student:" + Student.id + ":" + Student.name);} // Implémentez l'interface du comparateur <T>, définissez une méthode de comparaison spécifique, triez par des collections de comparaison.Sort (StudentList, New StudentComparator ()); System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.