码迷,mamicode.com
首页 > 编程语言 > 详细

Java记录 -60- TreeSet抛出ClassCastException

时间:2015-11-05 00:49:13      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:treeset抛出classcastexception   java记录   

TreeSet实现了SortedSet也实现了Set,但它不是随便一个对象都能存储:

public class TreeSetTest {
    public static void main(String[] args){
        TreeSet tree = new TreeSet();
        tree.add(new Pepole("zhangsan"));
        tree.add(new Pepole("lisi"));
        
        System.out.println(tree);
    }
}
class Pepole{
    int age;
    String name;
    public Pepole(String name){
        this.name = name;
    }
}

执行上面的代码会得到下面的异常信息:

Exception in thread "main" java.lang.ClassCastException: my.set.Pepole cannot be cast to java.lang.Comparable
    at java.util.TreeMap.put(TreeMap.java:542)
    at java.util.TreeSet.add(TreeSet.java:238)
    at my.set.TreeSetTest.main(TreeSetTest.java:10)

上面的异常出现在往TreeSet里放第二个对象时报的异常,放置第一个的时候没有问题。

放置第二个对象时会用第二对象和TreeSet里的对象进行比较,看是否重复;然而我们自己定义的Pepole没有指定排序规则,所以会抛出异常。

查看TreeSet的add方法可以发现其有这么一个提示:

ClassCastException - 如果指定对象无法与此 set 的当前元素进行比较


Java记录 -60- TreeSet抛出ClassCastException

标签:treeset抛出classcastexception   java记录   

原文地址:http://zlfwmm.blog.51cto.com/5892198/1709828

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!