黑马程序员技术交流社区

标题: 使用TreeSet报异常的问题,求解答 [打印本页]

作者: 梵天的梦    时间: 2014-3-5 19:10
标题: 使用TreeSet报异常的问题,求解答
本帖最后由 梵天的梦 于 2014-3-5 19:14 编辑

import java.util.Iterator;
import java.util.TreeSet;

class Man{
        
        private String name;
        private int age;
        
        Man(String name, int age){
                this.name = name;
                this.age = age;
        }
      
        public String getName(){
                return name;
        }
        
        public int getAge(){
                return age;
        }
}

public class TreeSetTest {
        public static void main(String[] args){
               
                TreeSet ts = new TreeSet();
               
                ts.add(new Man("zhang01",15));
                Iterator it = ts.iterator();
                while(it.hasNext()){
                        Man man = (Man)it.next();
                        System.out.println(man.getName());
                }
        }
}
在主函数里面向TreeSet集合里面add数据时报异常,按毕老师将的这里面只有一个元素时不应该报这个异常的呀,帮我看看?(JDK1.7)



作者: volvoxc    时间: 2014-3-5 20:44
我用的是JDK1.7,我也遇到过这种情况,这个应该是JKD版本的问题。只要是不具备比较性的元素一个也不让存,即使能存一个也没什么意义。
作者: 上官睿鹏    时间: 2014-3-5 20:53
本帖最后由 上官睿鹏 于 2014-3-5 22:20 编辑

刚刚理解错了,楼上是正解
作者: 三眼皮    时间: 2014-3-5 21:38
volvoxc 发表于 2014-3-5 20:44
我用的是JDK1.7,我也遇到过这种情况,这个应该是JKD版本的问题。只要是不具备比较性的元素一个也不让存, ...

确实是版本问题,我也遇到过,1.6就没问题。。。
作者: 疯狂沙漠    时间: 2014-3-6 17:04
针对那个异常,是由于TreeSet集合添加的对象必须具有比较的功能,否则会有异常。所以你的man类需要实现一个比较接口中的比较方法,如:

  1. public class Man implements Comparable{

  2.                
  3.         //………………………………这部分是你自己的代码
  4.        
  5.         @Override
  6.         public int compareTo(Object o) {
  7.                
  8.                 return 0;
  9.         }
  10.        
  11. }
复制代码



希望能够帮到你

作者: syusikoku    时间: 2014-3-6 17:19
我刚才在我的ecplise中测试了你的代码。发现是没有问题的。




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