黑马程序员技术交流社区
标题:
java中集合类问题
[打印本页]
作者:
陈文杰
时间:
2013-11-21 11:48
标题:
java中集合类问题
import java.util.*;
class Test
{
public static void diedai(Collection c)
{
Iterator i=c.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
}
public static void main(String[] args)
{
Student s1=new Student(2,"zhangsan");
Student s2=new Student(3,"lisi");
Student s3=new Student(1,"wangwu");
ArrayList<Object> a=new ArrayList<Object>();
a.add(s1);
a.add(s2);
a.add(s3);
Collections.sort(a);
diedai(a);
}
}
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;
}
}
运行时出现出现了Collections.sort(a)找不到符号
把ArrayList<Object>a1=new ArrayList<Object>();
这句换成
ArrayList<Student>a1=new ArrayList<Student>();就出现了使用了未经检查或不安全的操作
作者:
qw无语
时间:
2013-11-21 12:08
import java.util.*;
class Test {
public static void diedai(Collection<Student> c) {
Iterator<Student> i = c.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
public static void main(String[] args) {
Student s1 = new Student(2, "zhangsan");
Student s2 = new Student(3, "lisi");
Student s3 = new Student(1, "wangwu");
ArrayList<Student> a = new ArrayList<Student>();
a.add(s1);
a.add(s2);
a.add(s3);
Collections.sort(a);
diedai(a);
}
}
class Student implements Comparable<Student> {
int num;
String name;
Student(int num, String name) {
this.num = num;
this.name = name;
}
public int compareTo(Student o) {
Student s = o;
return num > s.num ? 1 : (num == s.num ? 0 : -1);
}
public String toString() {
return "num=" + num + "," + "name=" + name;
}
}
复制代码
你的泛型写少了.
作者:
freehiker
时间:
2013-11-21 22:54
第一个问题:因为类型参数是Object,而Object类没有实现Comparable接口,自身没有可比较性,所以Collections.sort(a)会出错
第二个问题:class Student implements Comparable未定义参数类型,需写成 class Student implements Comparable<Student>,然后compareTo方法中的参数Object换成Student
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2