import java.util.*; class Test { public static void diedai(Collection c)//括号里要加泛型哦: (Collection<Student> c),指明将要迭代的是哪种类型的集合 { Iterator i=c.iterator();//同样这里也要加上泛型 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<Object> a=new ArrayList<Object>();//把Object换成 Student ,因为这个集合我们只用来装学生对象,不装其他。。。 a.add(s1); a.add(s2); a.add(s3); Collections.sort(a);// 这里查找不到符号,是因为你没在程序开头静态导入Collections工具类的静态方法sort,或者补上全名 java.util.Collections.sort(a); diedai(a); } } class Student implements Comparable<Student>//在Comparable后面也应注明泛型, { int num; String name; Student(int num,String name) { this.num=num; this.name=name; } public int compareTo(Object o)//这里覆盖compareTo方法时,应指明是比较哪种类型,所以参数列表应改为(Student s) { Student s=(Student)o;//使用泛型后,这句强制向下转型就多余了,应删掉 return num>s.num ? 1 : (num==s.num ? 0 : -1); } public String toString() { return "num="+num+","+"name="+name; } } |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |