Arrays.sort (t [], comparateur <? Super T> C) est utilisé pour trier les tableaux d'objets par des règles définies par l'utilisateur.
La documentation officielle Java ne décrit que brièvement le rôle de cette méthode et ne la présente pas en détail. Cet article analysera cette méthode en profondeur.
1. Exemple simple
La méthode d'utilisation de type est très simple et claire. Dans l'exemple suivant, définissez d'abord un comparateur qui compare la taille du chien, puis transmettez son objet d'instance en tant que paramètre à la méthode de tri. Grâce à cet exemple, vous devriez être en mesure de maîtriser rapidement l'utilisation de Arrays.Sort ().
Importer java.util.arrays; importer java.util.comparator; class dog {int size; public dog (int s) {size = s;}} class dogsizeComparator implémente le comparateur <gog> {@ override public int compare (dog o1, chien o2) {return o1.size - o2.Size;}} public arnahe d1 = nouveau chien (2); chien d2 = nouveau chien (1); chien d3 = nouveau chien (3); chien [] dogarray = {d1, d2, d3}; printdogs (dogarray); arrays.sort (dogarray, new dogsizicomparator ()); printdogs (dogarray);} public static void printdogs System.out.print (D.Size + ""); System.out.println ();}}La sortie est:
2 1 3 1 2 3
2. Utilisez le mode politique
Ceci est un exemple parfait et concis du modèle de stratégie. Il convient de mentionner pourquoi le modèle de stratégie convient à une utilisation dans ce scénario.
D'une manière générale, le modèle de stratégie permet à différents algorithmes d'être sélectionnés lorsque le programme est exécuté. Par exemple, lors du tri, différents comparateurs sont passés et différents algorithmes sont utilisés.
Selon l'exemple ci-dessus, supposons que vous souhaitiez trier par le poids du chien, vous pouvez créer un nouveau comparateur pour trier comme ci-dessous:
Class Dog {int Size; int Weight; Public Dog (int s, int w) {size = s; Weight = w;}} class dogsizeCaparator implémente le comparateur <gog> {@ Override public int compare (chien o1, chien o2) {return o1.Size - o2.size;}} class dog combarator met o1.weight - o2.weight;}} classe publique Arraysort {public static void main (String [] args) {chien d1 = nouveau chien (2, 50); chien d2 = nouveau chien (1, 30); chien d3 = nouveau chien (3, 40); chien [] dogarray = {d1, d2, d3}; printdogs (dogarray); Arraysort (dogAray, New DogsizECompparator ()); printdogs (dogarray); arrays.sort (dogarray, new dogweightcomparator ()); printdogs (dogarray);} public static void printdogs (dog [] chiens) {for (dog d: dogs) System.out.print ("size =" + d.size + "weight =" + d.weight + " "); System.out.println ();}}Résultats de l'exécution:
taille = 2 poids = 50 taille = 1 poids = 30 taille = 3 poids = 40 taille = 1 poids = 30 taille = 2 poids = 50 taille = 3 poids = 40 taille = 1 poids = 30 taille = 3 poids = 40 taille = 2 poids = 50
Le comparateur est une interface, donc la méthode de tri peut passer dans n'importe quelle classe qui implémente cette interface, qui est l'idée principale du modèle de politique.
3. Pourquoi utiliser "Super"
Il est facile de comprendre si vous utilisez "Comparator <T> C", mais le <? Supert> Dans le deuxième paramètre de type signifie que le type accepté par le comparateur peut être T ou sa superclasse. Pourquoi est-ce une superclasse? La réponse est: cela permet la comparaison de différents objets de sous-classe en utilisant le même comparateur. Ceci est clairement démontré dans l'exemple suivant:
Importer Java.util.arrays; Importer Java.util.comparator; class Animal {int Size;} class Dog étend Animal {Public Dog (int S) {size = s;}} class Cat AnimalSiceCarator O2.Size;} // De cette manière, toutes les sous-classes d'animaux peuvent utiliser ce comparateur.} classe publique Arraysort {public static void main (String [] args) {dog d1 = nouveau chien (2); chien d2 = nouveau chien (1); chien d3 = nouveau chien (3); dog [] dogarray = {d1, d2, d3}; printdogs (dogarray); New AnimalIzECompparator ()); printdogs (dogarray); System.out.println (); // Lorsque vous avez un tableau de chat, le même comparateur peut être utilisé. Chat c1 = new Cat (2); chat c2 = new Cat (1); chat c3 = new Cat (3); chat [] catarray = {c1, c2, c3}; printdogs (catarray); arrays.sort (catarray, new animauxizeCompparator ()); printdogs (catarray);} public static voïde printdogs System.out.print ("size =" + a.size + ""); System.out.println ();}}Résultat de sortie:
taille = 2 taille = 1 taille = 3 taille = 1 taille = 2 taille = 3 taille = 3 taille = 2 taille = 1 taille = 3 taille = 1 taille = 2 taille = 3
4. Résumé
Les informations relatives à Arrays.Sort () sont résumées comme suit:
Général: modèle de conception de stratégie de super classe;
TRoi de fusion: complexité temporelle n * log (n);
Java.util.collections # tri (liste <T> List, Comparator <? Super T> C) utilise une idée similaire à Arrays.sort.
Résumer
Ce qui précède est toute l'explication détaillée du code Arrays.Sort () en Java. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets liés à Java sur ce site Web. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!