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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 依旧 中级黑马   /  2013-8-18 22:03  /  1158 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

应该输出:lisi02.....17
                   lisi01.....20
                   lisi04.....20
                   lisi03.....21


但是只输出了:lisi02.....17

这是什么原因?

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetDemo2 {
/**
  *在TreeSet排序中一共有两种: 第一种就是集合自身具有比较性, 实现Comparable接口覆写compareTo方法
  *
  *第二种就是自定义比较器 当集合已经有排序功能,但是不符合项目的需求,
  * 那么这时就要自定义自己的比较器,实现Comparator接口,覆写compare方法,把自定义 比较器,传到TreeSet的构造器中
  */
public static void main(String[] args) {
  TreeSet ts = new TreeSet();
  ts.add(new Worker("lisi01",20));
  ts.add(new Worker("lisi02",17));
  ts.add(new Worker("lisi03",21));
  ts.add(new Worker("lisi04",20));
  Iterator it = ts.iterator();
  if (it.hasNext()) {
   Worker w = (Worker) it.next();
   System.out.println(w.getName() + ":" + w.getAge());
  }
}
}
class Worker implements Comparable {// 该接口强制让工人对象具备比较性
private String name;
private int age;
Worker(String name, int age) {
  this.name = name;
  this.age = age;
}
public String getName() {
  return name;
}
public int getAge() {
  return age;
}
@Override
public int compareTo(Object o) {
  if (!(o instanceof Worker)) // 对输入的对象进行判断是否是Work对象
   throw new RuntimeException("不是工人对象"); // 如果不是则抛出异常
  Worker w = (Worker) o;
  if (this.age > w.age)
   return 1;
  if (this.age == w.age)
   return this.name.compareTo(w.name);// 当主要条件满足时,比较次要条件,使用字符串的compareTo方法*/
  return -1;
}
}

评分

参与人数 1技术分 +1 收起 理由
吴光新 + 1 淡定

查看全部评分

5 个回复

倒序浏览
哥们,你遍历集合了吗?
回复 使用道具 举报
遍历了啊!
Iterator it = ts.iterator();
  if (it.hasNext()) {
   Worker w = (Worker) it.next();
   System.out.println(w.getName() + ":" + w.getAge());
  }

回复 使用道具 举报
Jiewin 发表于 2013-8-19 00:39
哥们,你遍历集合了吗?

遍历了啊!
Iterator it = ts.iterator();
  if (it.hasNext()) {
   Worker w = (Worker) it.next();
   System.out.println(w.getName() + ":" + w.getAge());
  }

回复 使用道具 举报
依旧 发表于 2013-8-19 01:11
遍历了啊!
Iterator it = ts.iterator();
  if (it.hasNext()) {

哥们,用循环才能取出全部数据,你这只是取出第一条

回复 使用道具 举报
Jiewin 发表于 2013-8-19 01:23
哥们,用循环才能取出全部数据,你这只是取出第一条

晕!半天没有看到,{:soso_e113:},tks!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马