import java.util.*;
class ArrayListTest
{
public static void printElements(Collection c)
{
Iterator it=c.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
public static void main(String[]args)
{
ArrayList<Student> al=new ArrayList<Student>();
al.add(new Student("zhangsan",18));
  al.add(new Student("lisi",17));
  al.add(new Student("baby",17));
  System.out.println("al:");
  printElements(al);
Collections.sort(al);           //a
  printElements(al);
}
}
class Student  implements Comparable
{
String name ;
int age;
Student(String name ,int age)
{
this.name=name;
this.age=age;
}
public String toString()
{
return "name="+name+","+"age="+age;
}
public int compareTo(Object o)
{
Student s=(Student)o;
if(age<s.age)return -1;
if(age>s.age)return 1;
else return name.compareTo(s.name);
}

}
我用的JDK是1.5。支持泛型技术。
我的这个程序有一个警告
ArrayListTest.java:48: 警告: [unchecked] 方法调用未经检查:java.util.Collection
s 中的 <T>sort(java.util.List<T>) 被应用于 <Student>(java.util.ArrayList<Student
>)
                Collections.<Student>sort(al);
                                         ^
1 警告a行怎么样修改阿??

解决方案 »

  1.   

    我运行了一下,没有问题.不过ArrayList<Student> al=new ArrayList<Student>();改为
    ArrayList al=new ArrayList(); 或 List al=new ArrayList();
      

  2.   

    出现这个问题,是因为你前面用了范型,但是在实现接口Comparable的使用却没有用。class Student  implements Comparable<Student>
    {
    .........
    public int compareTo(Student s)
    {
    if(age<s.age)return -1;
    if(age>s.age)return 1;
    else return name.compareTo(s.name);
    }
    .........
    }