黑马程序员技术交流社区

标题: 我实现了Comparator接口,为什么会报Comparable接口类转换异常呢 [打印本页]

作者: hopestar    时间: 2015-6-18 11:42
标题: 我实现了Comparator接口,为什么会报Comparable接口类转换异常呢
看出来问题的大神,请不吝赐教,谢谢!
实现代码如下:
package views;

import java.util.*;

public class Test3 {

        public static void main(String[] args) {

                // TODO Auto-generated method stub
Collection<Student> ss=new TreeSet<Student>();
ss.add(new Student(18,"B"));
ss.add(new Student(18,"A"));
ss.add(new Student(19,"a"));
ss.add(new Student(19,"a"));
ss.add(new Student(20,"f"));
ss.add(new Student(20,"a"));
ss.add(new Student(16,"B"));
ss.add(new Student(17,"A"));
Iterator< Student> it=ss.iterator();
Student stu1=null;
while(it.hasNext())
{
        stu1=it.next();
        System.out.println(stu1.getAge()+"----"+stu1.getName());
}

        }

}

class Student implements Comparator<Student> {
        private int age=0;
        private String name =null;
        public Student (int age,String name){
                this.age=age;
                this.name=name;
               
        }
        public int getAge()
        {
                return age;
        }
        public String getName()
        {
                return name;
        }
        
        public int compare(Student obj1,Student obj2)
        {
                if(obj1.getAge()==obj2.getAge())
                return obj1.getName().compareTo(obj2.getName()) ;
                return obj1.getAge()-obj2.getAge();
        }
}
作者: hufu4635    时间: 2015-6-18 14:30
1.元素具备比较性,是让元素实现,cpomparable接口,而不是compartor接口。2.实现comparator接口,是自定义比较器,然后作为参数传递给TreeSet接口的带参构造
作者: 仅此一抹心醉    时间: 2015-6-18 17:38
很简单  你记混淆了
作者: rose_xiaomei    时间: 2015-6-18 19:37
二楼正解
作者: edithe    时间: 2015-6-18 21:40
不想解释
作者: hopestar    时间: 2015-6-19 15:49
hufu4635 发表于 2015-6-18 14:30
1.元素具备比较性,是让元素实现,cpomparable接口,而不是compartor接口。2.实现comparator接口,是自定 ...

是的,就是这样的!发帖后,没过几分钟就已经解决了,不过,还是谢谢哦!!大神




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2