Préface
L'interface de liste dans le package java.util hérite de l'interface de collection et est utilisée pour stocker les collections d'objets. Par conséquent, lors du tri de ces objets, la classe d'objets peut comparer le même objet lui-même, soit utiliser le comparateur pour effectuer la comparaison et le tri.
La classe d'entité étudiante, y compris le nom et les attributs d'âge, est triée dans l'ordre croissant dans le nom lors de la comparaison, et si les noms sont les mêmes, il est trié dans l'ordre croissant en âge.
Le premier type: comparaison des cours d'entité par eux-mêmes
(Implémentez l'interface comparable: public interface Comparable<T> , il existe une déclaration de méthode: public int compareTo(T o); );
Exemple de code:
classe publique Student implémente le nom de la chaîne comparable <Student> {nom de chaîne privée; Âge privé; Student public () {super (); // TODO Stume de constructeur généré automatique} Student public (nom de chaîne, int age) {super (); this.name = name; this.age = âge; } 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 (Student o) {// TODO Méthode générée automatiquement Stub int flag = this.name.compareto (o.name); if (flag == 0) {flag = this.age - o.age; } drapeau de retour; }} Ensuite, utilisez sort(Comparator<? super E> c) de la classe de liste ou sort(List<T> list) de la classe d'outils java.util.Collections (en fait, il n'y a qu'une seule phrase: list.sort(null); ) pour trier:
Liste <Student> Students = New ArrayList <Student> (); Students.Add (New Student ("A", 10)); Students.Add (New Student ("B", 12)); Students.Add (New Student ("B", 11)); Students.Add (New Student ("AC", 20)); étudiants.sort (null); //Collections.sort(STUDENTS); résultat:
A 10 AC 20 B 11 B 12
Le deuxième type: trier à l'aide d'un comparateur.
Exemple de code:
classe publique Student {nom de chaîne privée; Âge privé; Student public () {super (); // TODO Stume de constructeur généré automatique} Student public (nom de chaîne, int age) {super (); this.name = name; this.age = âge; } 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; }} La public interface Comparator<T> java.util.Comparator int compare(T o1, T o2); et autres méthodes:
Notre comparateur souhaite implémenter cette interface et implémenter compare :
classe privée StudentComparator implémente le comparateur <Student> {@Override public int compare (Student o1, étudiant o2) {// TODO Méthode générée automatiquement Stub int flag = o1.getName (). compareTo (o2.GetName ()); if (Flag == 0) {flag = o1.getage () - o2.getage (); } drapeau de retour; }} Lorsque vous comparez, vous pouvez utiliser la méthode de sort(Comparator<? super E> c) de la méthode de liste (ou de la liste des outils java.util.Collections à sort(List<T> list, Comparator<? super T> c) Méthode) pour trier.
Liste <Student> Students = New ArrayList <Student> (); Students.Add (New Student ("A", 10)); Students.Add (New Student ("B", 12)); Students.Add (New Student ("B", 11)); Students.Add (New Student ("AC", 20)); Test t = new test (); Students.Sort (T.New StudentComparator ()); //Collections.sort(STUDENTS, T.NEW StudentComparator ()); pour (étudiant étudiant: étudiants) {System.out.println (student.getName () + "" + Student.getAting ()); } Le résultat est le même que la première méthode:
A 10 AC 20 B 11 B 12
Résumer
Ce qui précède consiste à trier la liste en Java. J'espère que le contenu de cet article sera d'une aide à l'étude ou au travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer.