Données numériques (octet int court long flottant double) Il est intrinsèquement de taille comparable et triable. String implémente l'interface Comparable et peut également comparer les tailles et trier. Cependant, il existe de nombreux types de classes personnalisées et il n'existe pas d'indicateur commun pouvant être utilisé comme indicateur de tri. est nécessaire d'établir manuellement une comparaison dans la méthode personnalisée, à cet effet, java fournit deux interfaces Comparable et Comparator.
Le tri sous-jacent Collections.sort() repose sur Arrays.sort() et Arrays.sort(). la méthode des bulles est utilisée pour le tri.
Les objets qui doivent être comparés en taille peuvent implémenter l'interface Comparable et y implémenter la méthode abstraite, qui est utilisée pour définir la méthode de comparaison. Voici un exemple pour illustrer :
package com.javase.collections.comparable;public class Student implements Comparable<Student> {private String name;private int score;public Student() {super(); }public Student(String name, int score) {super();this.name = name;this.score = score; }public String getName() {return name; }public void setName(String name) {this.name = name; }public int getScore() {return score; }public void setScore(int score) {this.score = score; } @Overridepublic int compareTo(Student stu) {return this.score - stu.score;// 操作对象减去参数对象,升序排列,反之降序。 } }
dans la méthode compareTo(). , en utilisant l'attribut score comme index de tri, en utilisant "this.score-stu.score", les résultats finaux sont classés par ordre croissant, et vice versa.
package com.javase.collections.comparable;import java.util.ArrayList;import java.util.Collections;import java.util.List;import org.junit.Test;public class ComparableTest { @Testpublic void testComparable() { List<Student> stus = new ArrayList<Student>(); Student zhangsan = new Student("zhangsan", 100); Student lisi = new Student("lisi", 90); Student wanger = new Student("wanger", 95); stus.add(zhangsan); stus.add(lisi); stus.add(wanger); System.out.println("排序前");for (Student x : stus) { System.out.println(x.getName() + "::" + x.getScore()); } System.out.println("排序后"); Collections.sort(stus);for (Student x : stus) { System.out.println(x.getName() + "::" + x.getScore()); } } }
Sortie :
Si une classe n'implémente pas l'interface Comparable lors de sa création, vous espérez la comparer sans en modifiant le code source. Pour trier ses objets, vous pouvez implémenter l'interface Comparator et spécifier la méthode de tri lors de l'appel de la méthode de tri. Voici un exemple pour illustrer :
package com.javase.collections.comparator;public class Student {private String name;private int score;public Student() {super(); }public Student(String name, int score) {super();this.name = name;this.score = score; }public String getName() {return name; }public void setName(String name) {this.name = name; }public int getScore() {return score; }public void setScore(int score) {this.score = score; } }
package com.javase.collections.comparator;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import org.junit.Test;public class ComparatorTest { @Testpublic void test() { List<Student> stus = new ArrayList<Student>(); Student zhangsan = new Student("zhangsan", 100); Student lisi = new Student("lisi", 90); Student wanger = new Student("wanger", 95); stus.add(zhangsan); stus.add(lisi); stus.add(wanger); System.out.println("排序前");for (Student x : stus) { System.out.println(x.getName() + "::" + x.getScore()); } System.out.println("-----------------------"); Collections.sort(stus, new Comparator<Student>() { @Overridepublic int compare(Student stu01, Student stu02) {// return stu01.getScore() - stu02.getScore();//升序return stu02.getScore() - stu01.getScore();// 降序 } }); System.out.println("排序后");for (Student x : stus) { System.out.println(x.getName() + "::" + x.getScore()); } } }
Dans la méthode compare(Student stu01, Student stu02), utilisez l'attribut score comme indicateur de tri et utilisez "stu01.score-stu02.score ". Enfin Les résultats sont triés par ordre croissant et vice versa par ordre décroissant.
Sortie :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!