当前位置: 代码迷 >> Java相关 >> Collections.sort()调用错误
  详细解决方案

Collections.sort()调用错误

热度:954   发布时间:2010-12-08 17:07:19.0
Collections.sort()调用错误
import java.lang.*;
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)
    {
      
      Student s1=new Student(2,"zhangsan");
        Student s2=new Student(1,"lisi");
        Student s3=new Student(3,"wangwu");
        ArrayList<Object> al=new ArrayList<Object>();
        al.add(s1);
        al.add(s2);
        al.add(s3);
        Collections.sort(al);
        printElements(al);
    }
}

class Student implements Comparable
{
    int num;
    String name;
    Student(int num,String name)
    {
        this.num=num;
        this.name=name;
    }
   
    public int compareTo(Object o)
    {
        Student s=(Student)o;
        return num>s.num ? 1:(num==s.num ? 0:-1);
    }
    public String toString()
    {
        return "num="+num+","+"name="+name;
    }
}
为什么编译错误啊:

说是找不到符号,好想是sort()方法找不到啊。(我的是JDK1.5)
搜索更多相关的解决方案: sort  Collections  

----------------解决方案--------------------------------------------------------
怎么回事,没人知道吗,急啊!!!
----------------解决方案--------------------------------------------------------
程序代码:
import java.lang.*;
import java.util.*;

public 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)
    {
     
      Student s1=new Student(2,"zhangsan");
        Student s2=new Student(1,"lisi");
        Student s3=new Student(3,"wangwu");
        ArrayList<Object> al=new ArrayList<Object>();
        al.add(s1);
        al.add(s2);
        al.add(s3);
        Collections.sort((List)al);//参数a1 要向上转为List对像
        printElements(al);
    }
}

class Student implements Comparable
{
    int num;
    String name;
    Student(int num,String name)
    {
        this.num=num;
        this.name=name;
    }
   
    public int compareTo(Object o)
    {
        Student s=(Student)o;
        return num>s.num ? 1:(num==s.num ? 0:-1);
    }
    public String toString()
    {
        return "num="+num+","+"name="+name;
    }
}

----------------解决方案--------------------------------------------------------
回复 3楼 lampeter123
版主啊,不行哦。

改过之后还是有错:使用了未经检查或不安全的操作。
----------------解决方案--------------------------------------------------------
以下是引用windyfzz在2010-12-10 12:26:53的发言:

版主啊,不行哦。

改过之后还是有错:使用了未经检查或不安全的操作。
ArrayList<Object> al=new ArrayList<Object>();//改为ArrayList<Student> al=new ArrayList<Student>();

----------------解决方案--------------------------------------------------------
回复 5楼 lampeter123
额...还是不行哦。
若改成又提示:ArrayList<Student> al=new ArrayList<Student>();
则编译出错:使用了未经检查或不安全的操作。
版主啊,再给想想吧。
----------------解决方案--------------------------------------------------------
以下是引用windyfzz在2010-12-13 11:57:14的发言:

额...还是不行哦。
若改成又提示:ArrayList al=new ArrayList();
则编译出错:使用了未经检查或不安全的操作。
版主啊,再给想想吧。
注意: public class ArrayListTest 是公共与文件名ArrayListTest.java一致

----------------解决方案--------------------------------------------------------
程序是可编译通过的,不用理会警告语吧
----------------解决方案--------------------------------------------------------
我用的是《21天学通JAVA》的代码,也有类似的警告。求解。


[ 本帖最后由 洛云 于 2010-12-20 12:18 编辑 ]
----------------解决方案--------------------------------------------------------
  相关解决方案