问题描述:
开发时我们希望用一个类表示某种物品, 用其域来描述物品的特性,
当我们有一组物品也就是一个对象数组时,我们会希望这组物品按照它的某个属性来排序
也就是需要对象数组按照其属性排序
一 类定义时实现Comparable接口,定义自身的比较算法。
要排序就要有比较的方法, 因为是自定义的类, 系统不知道怎么做两个自定义类的比较,
所以我们要自己在类内写两个类的比较的方法,也就是告诉按照那个属性或者那种方式来给对象数组排序
自定义比较算法也就是实现Comparable接口:(会自动生成需要自己写的方法如下图)
补全类:
public class Good implements Comparable<Good>
{
String name;
int price;
public Good(String name,int price)
{
this.name=name;
this.price=price;
}
@Override
public int compareTo(Good good) {
// TODO Auto-generated method stub
return this.price-good.price;
}
}
调用Collections.sort();
public static void main(String[] args)
{
ArrayList<Good> goods = new ArrayList<Good>();
goods.add(new Good("二", 2));
goods.add(new Good("三", 3));
goods.add(new Good("一", 1));
System.out.println("排序前:");
for (Good good : goods)
System.out.println("姓名:"+good.name+" 价格:"+good.price);
Collections.sort(goods);
System.out.println("排序后:");
for (Good good : goods)
System.out.println("姓名:"+good.name+" 价格:"+good.price);
}
内容参考如下博主:
https://blog.youkuaiyun.com/wangtaocsdn/article/details/71500500