因为你添加的是自定义对象集合,所以要重写toString(),由于你的对象Cat只有一个int类型成员,所以你就不重写compareTo方法。然后你就排序,这样是不严格,你看下排序的说明。根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。
我改了下:
- import java.util.*;
- class Cat implements Comparable
- {
- private String name;
- private int age;
- Cat(String name,int age)
- {
- this.name = name;
- this.age = age;
- }
- public String toString()
- {
- return this.name + "..." + this.age;
- }
- public int compareTo(Object obj)
- {
- if(!(obj instanceof Cat))
- return -1;
- Cat cat = (Cat)obj;
- return this.name.compareTo(cat.name);
- }
- }
- class CatDemo
- {
- public static void main(String[] args)
- {
- Cat c1 = new Cat("a",6);
- Cat c2 = new Cat("b",8);
- List<Cat> list = new ArrayList<Cat>();
- list.add(c1);
- list.add(c2);
- for (int i = 0; i < list.size(); i++) {
- System.out.println(list.get(i));
- }
- Collections.sort(list);
- System.out.println(list);
- }
- }
复制代码
|