A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梵天的梦 中级黑马   /  2014-3-5 19:10  /  1202 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 梵天的梦 于 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)


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
我用的是JDK1.7,我也遇到过这种情况,这个应该是JKD版本的问题。只要是不具备比较性的元素一个也不让存,即使能存一个也没什么意义。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
本帖最后由 上官睿鹏 于 2014-3-5 22:20 编辑

刚刚理解错了,楼上是正解
回复 使用道具 举报
volvoxc 发表于 2014-3-5 20:44
我用的是JDK1.7,我也遇到过这种情况,这个应该是JKD版本的问题。只要是不具备比较性的元素一个也不让存, ...

确实是版本问题,我也遇到过,1.6就没问题。。。
回复 使用道具 举报
针对那个异常,是由于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. }
复制代码



希望能够帮到你

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
我刚才在我的ecplise中测试了你的代码。发现是没有问题的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马