【六祎 - JAVA】实现类比较器 Comparable 规则排序

- public static <T> void sort(List<T> list):
      将集合中元素按照默认规则排序。
      对于自定义的引用类型的排序人家根本不知道怎么排,直接报错!
      如果希望自定义的引用类型排序不报错,可以给类提供比较规则:Comparable。

Orange.java

package cn.xiaolonghong._05Collections工具类;

/**
 * Orange:
 *
 * @author (Mr.Xiao)
 * @version 1.0
 * @目标:实现类的比较器规则 Comparable 进行自定义排序
 * @date: 2019-12-26 02:07
 */
public class Orange implements Comparable {
    private String name;
    private double weight;
    private String price;

    public Orange() {
    }

    public Orange(String name, double weight, String price) {
        this.name = name;
        this.weight = weight;
        this.price = price;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return weight
     */
    public double getWeight() {
        return weight;
    }

    /**
     * 设置
     * @param weight
     */
    public void setWeight(double weight) {
        this.weight = weight;
    }

    /**
     * 获取
     * @return price
     */
    public String getPrice() {
        return price;
    }

    /**
     * 设置
     * @param price
     */
    public void setPrice(String price) {
        this.price = price;
    }

    public String toString() {
        return "Orange{name = " + name + ", weight = " + weight + ", price = " + price + "}"+"\n";
    }

    @Override
    public int compareTo(Object o) {
        Orange o2 = (Orange) o;
        // 认为 this.weight > o2返回正整数。
        // 认为 this.weight = o2返回0。
        // 认为 this.weight < o2返回负整数。
        if ( this.weight > o2.getWeight()) return 1;
        if ( this.weight < o2.getWeight()) return -1;
        return 0;
    }
}

CollectionsDemo02.java

public class CollectionsDemo02 {
    public static void main(String[] args) {
        //1.自定义类型排序
        List<Orange> oranges = new ArrayList<>();
        Orange o1 = new Orange("红橘子",155.2,"便宜");
        Orange o2 = new Orange("黄橘子",122.2,"便宜");
        Orange o3 = new Orange("黄橘子",122.2,"便宜");
        Orange o4 = new Orange("青橘子",102.2,"便宜");
        Collections.addAll(oranges,o1,o2,o3,o4);
        // 排序,按照类实现的比较规则进行排序!!
        Collections.sort(oranges);
        System.out.println(oranges);
   }
}

执行结果 

 

posted @ 2022-04-26 00:54  你好,Alf  阅读(14)  评论(0编辑  收藏  举报