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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fenzheng 中级黑马   /  2014-3-14 23:30  /  1031 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为没事treeset,存代码,我只存进去一个呢,我命名写了4哥对象的呀??????
  1. package jihe;

  2. import java.util.*;

  3. public class TreeSetDemo {
  4.         public static void main(String[] args) {
  5.                 TreeSet ts = new TreeSet();
  6.                 ts.add(new student("lisi02", 22));
  7.                 ts.add(new student("lisi007", 20));
  8.                 ts.add(new student("lisi09", 19));
  9.                 ts.add(new student("lisi01", 19));

  10.                 Iterator it = ts.iterator();
  11.                 /*while (it.hasNext()) {
  12.                         student stu = (student) it.next();
  13.                         System.out.println(stu.getName() + "..." + stu.getAge());
  14.                         System.out.println("treeset ts里放的元素的个数是:"+ts.size()+"个");

  15.                 }*/
  16.                 for(int i=0;i<ts.size();i++){
  17.                         System.out.println("ts集合的元素是"+ts.toString()+"ts集合的size()是"+ts.size());
  18.                 }
  19.         }

  20. }

  21. class student implements Comparable// ǿ����ѧ�������бȽ��ԣ�
  22. {
  23.         private String name;
  24.         private int age;

  25.         student(String name, int age) {
  26.                 this.name = name;
  27.                 this.age = age;
  28.         }

  29.         public int compareTO(Object obj) {
  30.                 if (!(obj instanceof student))
  31.                         throw new RuntimeException("����ѧ�����");
  32.                 student s = (student) obj;
  33.                 System.out.println(this.name + "..compare TO.." + s.name);
  34.                 if (this.age > s.age)
  35.                         return 1;
  36.                 if (this.age == s.age)
  37.                         return this.name.compareTo(s.name);
  38.                 return -1;

  39.         }

  40.         public int getAge() {
  41.                 // TODO Auto-generated method stub
  42.                 return age;
  43.         }

  44.         public String getName() {
  45.                 // TODO Auto-generated method stub
  46.                 return name;
  47.         }

  48.         // @Override
  49.         /*
  50.          * public int compareTo(Object o) { // TODO Auto-generated method stub
  51.          * return 0; }
  52.          */
  53.         /*
  54.          * @Override public int compareTo(Object o) { // TODO Auto-generated method
  55.          * stub return 0; }
  56.          */
  57.         @Override
  58.         public int compareTo(Object o) {
  59.                 // TODO Auto-generated method stub
  60.                 return 0;
  61.         }
  62. }
复制代码
??????????????????????????????奇怪

评分

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

查看全部评分

2 个回复

正序浏览
你的student类中重写compareTo方法的时候始终返回的是0,如果对象通过compareTo比较相等,就无法将其添加到TreeSet集合中,你在上面还定义了一个compareT0的方法,不知道是写错了,还是怎么!如果把那个方法当作重写的compareTo就不会出现你所说的错误!

评分

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

查看全部评分

回复 使用道具 举报
程序里student类中为什么有一个compareTO函数,最后面还有一个compareTo()函数?是不是写错了

TreeSet集合元素自带比较性时,往集合里add元素,是自动调用元素对象的compareTo方法,你程序里这个compareTo()方法对任意2个元素比较都是返回0,也就是任意2个元素比较都是相等的,所以TreeSet里只存进了第一个元素。

把程序里compareTo()函数删掉,将compareTO()函数名改成compareTo()就行了。
另,最好是重写student类的toString()方法,方便打印集合元素。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马