黑马程序员技术交流社区

标题: 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
  1. import java.util.*;

  2. class Test {
  3. public static void diedai(Collection<Student> c) {
  4. Iterator<Student> i = c.iterator();
  5. while (i.hasNext()) {
  6. System.out.println(i.next());
  7. }
  8. }

  9. public static void main(String[] args) {
  10. Student s1 = new Student(2, "zhangsan");
  11. Student s2 = new Student(3, "lisi");
  12. Student s3 = new Student(1, "wangwu");
  13. ArrayList<Student> a = new ArrayList<Student>();
  14. a.add(s1);
  15. a.add(s2);
  16. a.add(s3);
  17. Collections.sort(a);
  18. diedai(a);

  19. }
  20. }

  21. class Student implements Comparable<Student> {
  22. int num;
  23. String name;

  24. Student(int num, String name) {
  25. this.num = num;
  26. this.name = name;
  27. }

  28. public int compareTo(Student o) {
  29. Student s = o;
  30. return num > s.num ? 1 : (num == s.num ? 0 : -1);
  31. }

  32. public String toString() {
  33. return "num=" + num + "," + "name=" + name;
  34. }
  35. }
复制代码
你的泛型写少了.

作者: 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