ソートアルゴリズムを使用して、すべての参照タイプデータの比較(バブル+選択ソート)を行い、Personクラスをカスタマイズしてテストします.


ソートアルゴリズムを使用して、すべての参照タイプデータの比較(バブル+選択ソート)を行い、Personクラスをカスタマイズしてテストします.
  • メソッドはpublicとして宣言されます  void sortArr(Object arr[]){  }.
  • メソッドでは、まずソート前の配列コンテンツを出力し、次にソートし、最後にソート後の配列コンテンツを出力する.
  • は、Javaが提供する方法を直接呼び出さずに、バブルソートまたは他のアルゴリズム実装であってもよい.
  • アイデア:任意のクラスは、参照データ型の要素ソートを実現するためにComparableインタフェースを実装し、sort()メソッドでObjectをComparableに強く変換して2つのオブジェクトの比較を実現します.
    泡:
    public class Student implements Comparable{
        private String name;
        private int age;
        private Double score;
    
        public Student() {
        }
    
        public Student(String name, int age, Double score) {
            this.name = name;
            this.age = age;
            this.score = score;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public Double getScore() {
            return score;
        }
    
        public void setScore(Double score) {
            this.score = score;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", score=" + score +
                    '}';
        }
    
        @Override
        public int compareTo(Object o) {
            Student stu = (Student)o;
            if (Double.compare(this.score, stu.score)==0){
                return -Integer.compare(this.age, stu.age);
            }
            return -Double.compare(this.score, stu.score);
        }
    }
    public class Sort {
        public static void arrSort(Comparable[] arr){
            for (int i = 0; i < arr.length-1; i++) {
                boolean flag = true;
                for (int j = 0; j < arr.length-1-i; j++) {
                    if (arr[j].compareTo(arr[j+1])==1){
                        Comparable temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                        flag = false;
                    }
    
                }
                if (flag){
                    break;
                }
            }
        }
    }
    public class Test {
        public static void main(String[] args) {
            Student stu1 = new Student("  ", 18, 60.1);
            Student stu2 = new Student("  ", 17, 99.1);
            Student stu3 = new Student("  ", 19, 60.1);
            Student stu4 = new Student("   ", 16, 60.9);
            Student[] arr = {stu1,stu2,stu3,stu4};
            Sort.arrSort(arr);
            for (Student student : arr) {
                System.out.println(student);
            }
        }
    }