我记得早上我出去的时候,我已经回复此贴了啊!怎么没显示啊!如同二楼说的,任何类的上帝都是Object,如果我们不重写override就调用Object的toString()方法。既然Object是所有类的上帝,所以它为了满足所有的类,就有了自己toString()的形式,不管任何类,只要你不重写toString,我一律按照我的输出形式来,该方法返回一个字符串,它的值等于: (二楼的)
getClass().getName() + '@' + Integer.toHexString(hashCode())
另外对于你的一个方法Collection.sort的使用,要注意该方法的要求。
sortpublic static <T extends Comparable<? super T>> void sort(List<T> list)根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。此排序方法具有稳定性:不会因调用 sort 方法而对相等的元素进行重新排序。
这点要注意,这是我针对你的需求,改进的代码:
- 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);
- }
- }
复制代码
|