数値データ (byte int short long float double) は、当然ながらサイズが比較可能であり、Comparable インターフェイスを実装しており、サイズを比較することもできます。カスタム クラスには多くの種類があり、並べ替えインジケーターとして使用できる共通のインジケーターがないため、この目的のために、Java は 2 つのインターフェイスを提供します。 、比較対象と比較者。
Collections.sort() の基礎となる並べ替えは Arrays.sort() に依存しており、Arrays.sort() は並べ替えにバブル メソッドを使用します。
サイズを比較する必要があるオブジェクトは、Comparable インターフェイスを実装し、比較方法を設定するために使用されるその抽象メソッドを実装できます。以下に例を示します。
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;// 操作对象减去参数对象,升序排列,反之降序。 } }
CompareTo() メソッドでは、「this.score-stu.score」を使用して、属性スコアが並べ替えインジケーターとして使用されます。 、最終結果は昇順に並べ、その逆に降順に並べます。
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()); } } }
出力:
1. エンティティ クラス
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()); } } }
出力:
以上がComparable と Comparator の比較と使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。