A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈文杰 中级黑马   /  2013-11-21 11:48  /  1394 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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>();就出现了使用了未经检查或不安全的操作

评分

参与人数 2技术分 +1 黑马币 +3 收起 理由
田磊阳 + 1
乔兵 + 3

查看全部评分

2 个回复

倒序浏览
  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. }
复制代码
你的泛型写少了.

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
第一个问题:因为类型参数是Object,而Object类没有实现Comparable接口,自身没有可比较性,所以Collections.sort(a)会出错
第二个问题:class Student implements Comparable未定义参数类型,需写成 class Student implements Comparable<Student>,然后compareTo方法中的参数Object换成Student

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马