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<Point> al= new ArrayList <Point>();
/*al.add("zhangsan");
al.add("lisi");
al.add("wangwu");
for (int i=0;i<al.size();i++ )
{
System.out.println(al);
}*/
/*al.add(new Point(3,3));
al.add(new Point(1,1));
al.add(new Point(6,6));*/
//System.out.println(al);
//Object [] obj=al.toArray();
/*for (int i=0;i<obj.length ;i++ )
{
System.out.println(obj[i]);
}
List l=Arrays.asList(obj);
System.out.println(l);
printElements(l);*/
//Iterator it=al.iterator();
/*Iterator it=l.iterator();
it.next();
it.remove();
while (it.hasNext())
{
System.out.println(it.next());
}*/
Student s1=new Student(1,"zhangsan");
Student s2=new Student(3,"lisi");
Student s3=new Student(2,"wangwu");
Student s4=new Student(1,"lhaoliu");
ArrayList<Student> al=new ArrayList<Student>();
al.add(s1);
al.add(s2);
al.add(s3);
al.add(s4);
StudentComparator sc=new StudentComparator();
Collections.sort(al,sc);
printElements(al);
}
}
class Point
{
int x,y;
Point(int x,int y)
{
this.x=x;
this.y=y;
}
public String toString()
{
return "("+x+","+y+")";
}
}
class Student implements Comparable
{
int num;
String name;
Student(int num,String name)
{
this.num=num;
this.name=name;
}
public String toString()
{
return "num="+num+",name="+name;
}
public int compareTo(Object o)
{
Student s=(Student)o;
return num>s.num?1:(num==s.num?0:-1);
}}
class StudentComparator implements Comparator
{
public int compare(Object o1,Object o2)
{
Student s1=(Student)o1;
Student s2=(Student)o2;
int result=s1.num>s2.num?1:(s1.num==s2.num?0:-1);
if (result==0)
{
result=s1.name.compareTo(s2.name);
}
return result;
}
}G:\JavaTest\Lession6>javac -Xlint:unchecked ArrayListTest.java
ArrayListTest.java:52: 警告:[unchecked] 未经检查的转换
找到: StudentComparator
需要: java.util.Comparator<? super Student>
                Collections.sort(al,sc);
                                    ^
ArrayListTest.java:52: 警告:[unchecked] 方法调用未经检查:java.util.Collections
 中的 <T>sort(java.util.List<T>,java.util.Comparator<? super T>) 被应用于 (java.
util.ArrayList<Student>,StudentComparator)
                Collections.sort(al,sc);
                                ^
2 警告

解决方案 »

  1.   

    1.把你的class Student implements Comparable
    改成class Student implements Comparable<Student>2.把class StudentComparator implements Comparator 
    改成
    class StudentComparator implements Comparator<Student>然后里面的compare方法改成public int compare(Student arg0, Student arg1) 
      

  2.   

    这个只是个警告,不是编译错误,如果想去除警告,可以采取下面措施:1、StudentComparator类增加范型
    如class StudentComparator implements Comparator<Student> {...}
    里面的方法就应该是public int compare(Student o1, Student o2)2、printElement方法应该改称
    public static void printElements(Collection<Student> c)
    Iterator也增加范型,如Iterator<Student>3、不是必须的。Student实现Comparable接口在这里根本没有用到,
    因此,在这里可以去除,减少代码冗余,
    没有用到原因是Collections.sort()方法制定了比较器,因此它本身的比较器是多余的。