- 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);
}
}
执行结果