package com.sf.day13;

import org.junit.Test;

import java.util.Arrays;
import java.util.Comparator;

public class Test01 {

    @Test
    public  void t1() {
        Student[] students =  new Student[3];
        students[0] = new Student("lisa",67);
        students[1] = new Student("zhangsan",90);
        students[2] = new Student("zhangsan",19);
        System.out.println(Arrays.toString(students));
        Arrays.sort(students);
        System.out.println(Arrays.toString(students));
    }

    @Test
    public void t2(){
        Goods[] all = new Goods[4];
        all[0] = new Goods("《红楼梦》", 80);
        all[1] = new Goods("《西游记》", 80);
        all[2] = new Goods("《三国演》", 80);
        all[3] = new Goods("《水浒传》", 120);
        Arrays.sort(all);
        System.out.println(Arrays.toString(all));
    }

    @Test
    public void t3(){
        Student[] students =  new Student[3];
        students[0] = new Student("lisa",67);
        students[1] = new Student("zhangsan",90);
        students[2] = new Student("zhangsan",19);
        StudentScoreComparator studentScoreComparator = new StudentScoreComparator();
        Arrays.sort(students,studentScoreComparator);
        System.out.println(Arrays.toString(students));
    }

    /**
     * 1、Comparable    自然排序   重写 compareTo    进行比较
     *      比较比较字符串（unicode码）     str. compareTo(str2)    为啥 因为string类已经重写compareTo
     *  我们只要指定比较器    arrays.sort(数组);
     *  为啥不需要   因为我们在student这个对象里面重写compareTo
     *
     * 2、Comparator 接口  自定义排序   compare()方法
     *  需要定义一个类去重写这个方法
     *  根据自己的定义规则
     *  class1  implements  Comparator{
     *        @Override
     *     public int compare(Object o1, Object o2) {
     *  }
     *
     *  为啥不能想第一种方式可以比较字符串？     string类没有实现compare这个方法      但是要是想比较可以在比较器里面自己定义
     *      测试的时候：   我们只要指定比较器    arrays.sort(对象数组，指定的比较器);
     *     这两种方式的场景：  多元素    有无字符串都可以
     *     第一种：Comparable   通常比较（根据比较的优先级   ；例如属性A相等时在根据属性B进行比较...）
     *     单元素     - - 没有字符串进行比较
     *     第二种：Comparator   通常比较一种属性（如果属性值相等   根据在集合和数组的加入顺序进行处理）
     */

}
