Cannot be cast to java.lang.Comparable异常
来源:互联网 发布:linux sed命令 编辑:程序博客网 时间:2024/06/05 07:59
Set集合中的treeSet问题:cannot be cast to java.lang.Comparable;
原理:
Set不保存重复的元素,与Collection类似,只是行为不同,Set是基于对象的值来确定归属性的。对结果排序,一般采用TreeSet。
TreeSet是依靠TreeMap来实现的。
TreeSet是一个有序集合,TreeSet中的元素将按照升序排列,缺省是按照自然排序进行排列,意味着TreeSet中的元素要实现Comparable接口。或者有一个自定义的比较器,
我们可以在构造TreeSet对象时,传递实现Comparator接口的比较器对象。
- TreeSet存储对象的时候, 可以排序, 但是需要指定排序的算法
- Integer能排序(有默认顺序), String能排序(有默认顺序), 自定义的类存储的时候出现异常(没有顺序)
- 如果想把自定义类的对象存入TreeSet进行排序 那么必须实现Comparable接口 在类上implement Comparable重写compareTo()方法*在方法内定义比较算法, 根据大小关系, 返回正数负数或零在使用TreeSet存储对象的时候, add()方法内部就会自动调用compareTo()方法进行比较*
==cannot be cast to java.lang.Comparable==,遇到这个异常错误,就是说treeMap(或者treeSet)并不知道该如何进行排序,解决这个异常有两种方法:
1. 在构造TreeMap时指定一个比较器,这个比较器用于比较两个值,并且返回一个整数值作为他们的比较结果。
2. 就是key实现Comparable接口。并重写compareTo()方法;根据大小关系, 返回正数负数或零
@Override public int compareTo(Resources o) { if (o.id == this.id) { return 0; } else if (this.id > o.id) { return 1; } else return -1; }
阅读全文
0 0
- Cannot be cast to java.lang.Comparable异常
- cannot be cast to java.lang.Comparable解决办法
- cannot be cast to java.lang.Comparable问题
- cannot be cast to java.lang.Comparable解决办法
- 使用treeSet报cannot be cast to java.lang.Comparable
- com.casinocity.bean.GameCategory cannot be cast to java.lang.Comparable
- TreeSet 集合在Add时报错cannot be cast to java.lang.Comparable
- AsyncTask java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[] 异常
- 异常处理:java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.Parameterized
- java.lang.Integer cannot be cast to java.lang.Long异常处理
- java.lang.Long cannot be cast to java.lang.Integer
- java.lang.Long cannot be cast to java.lang.Integer
- java.lang.Long cannot be cast to java.lang.Integer!
- java.lang.Integer cannot be cast to java.lang.Double
- java.lang.Integer cannot be cast to java.lang.String
- java.lang.Character cannot be cast to java.lang.String
- java.lang.Integer cannot be cast to java.lang.String
- java.lang.Long cannot be cast to java.lang.String
- Cookie&&Seesion
- signal系列之sigaction函数
- LeetCode No.8 String to Integer (atoi)
- Python-基础学习笔记(七)
- android触摸事件侦听
- Cannot be cast to java.lang.Comparable异常
- hive+haproxy+keepalived高可用配置
- 进程特征码遍历VC版
- Docker资源管理探秘:Docker背后的内核Cgroups机制
- AVL树的平衡化旋转
- Start Express Frameworks
- 基于fread()函数的读数据优化
- 人脸特征点提取—ASM算法
- Java 中 Timers 类