当前位置: 移动技术网 > IT编程>开发语言>Java > Set集合中的treeSet问题:cannot be cast to java.lang.Comparable;

Set集合中的treeSet问题:cannot be cast to java.lang.Comparable;

2018年07月17日  | 移动技术网IT编程  | 我要评论

 使用TreeSet保存自定义对象时,

必须让定义对象的类实现Comparable接口,并重写compareTo()方法

否则报

实体类User:cannot be cast to java.lang.Comparable异常

public class User implements Comparable<User>{
    private int age;
    private String name;
    private String pro;
    public User(String name,int age,String pro) {
        this.name = name;
        this.pro = pro;
        this.age = age;
    }
    
    @Override
    public int compareTo(User u) {
        if(this.age>u.age) {
            return 1;
        }else if(this.age==u.age) {
            return this.name.compareTo(u.name);
        }else {
            return -1;
        }
        
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPro() {
        return pro;
    }

    public void setPro(String pro) {
        this.pro = pro;
    }
}

测试类Test

public class test{

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Set<User> set = new    TreeSet<User>();
        User user = new User("Java", 21,"小仙女");
        User user2 = new User("Spring",22,"小跟班");
        set.add(user);
        set.add(user2);
        System.out.println(set.size());
        //遍历方式一
//        Iterator<User> it = set.iterator();
//        while(it.hasNext()) {
//            User u = it.next(); 
//            System.out.println(u.getName());
//        }
        for (User u : set) {
            System.out.println(u.getName()+","+u.getAge()+","+u.getPro());
        }
    }
}

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网