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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 虎牛龙马 中级黑马   /  2014-4-5 14:58  /  1425 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 梦里花-静 于 2014-4-6 16:04 编辑

package base.day6;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

class Worker {

private int age;
Worker(int age) {
  this.age = age;
}

public int getAge() {
  return age;
}

public void setAge(int age) {
  this.age = age;
}

@Override
public String toString() {
  return age + "";
}
}
class MyComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
  if(!(o1 instanceof Worker && o1 instanceof Worker)) {
   
   throw new RuntimeException("No Worker!");
   
  } else {
   
   Worker w1 = (Worker)o1;
   Worker w2 = (Worker)o2;
   
   if(w1.getAge() == w1.getAge())
    return 0;
   else if(w1.getAge() > w2.getAge())
    return 1;
   else
    return -1;
  }
  
}

}
public class Demo15 {
/**
  * @param args
  */
public static void main(String[] args) {
  Set<Worker> set = new TreeSet<Worker>(new MyComparator());
  
  set.add(new Worker(3));
  set.add(new Worker(31));
  set.add(new Worker(4));
  set.add(new Worker(35));
  set.add(new Worker(30));
  
  System.out.println(set);
  System.out.println(set.size());
}
}

以上代码,我想实现在控制台上按年龄升序打印set集合中的元素!!!!
结果居然是这个:
[3]
1

看到结果有种瞬间吊爆了的感觉。哪位大侠能发现问题!

2 个回复

倒序浏览
代码有两处有问题,第一处:o1 instanceof Worker && o1 instanceof Worker    这个问题不大。
第二处是关键: if(w1.getAge() == w1.getAge())
    return 0;

自己改正即可。这些不是代码的问题,而是粗心造成的,写代码最重要的是要细心。新手应该培养良好的编程习惯。亲身体验,希望可以帮到你。

评分

参与人数 1技术分 +1 收起 理由
梦里花-静 + 1 细节决定成败

查看全部评分

回复 使用道具 举报
蓝雨星空 发表于 2014-4-5 16:24
代码有两处有问题,第一处:o1 instanceof Worker && o1 instanceof Worker    这个问题不大。
第二处是关 ...

真细心啊!谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马