黑马程序员技术交流社区
标题:
关于TreeSet集合的一个问题!
[打印本页]
作者:
虎牛龙马
时间:
2014-4-5 14:58
标题:
关于TreeSet集合的一个问题!
本帖最后由 梦里花-静 于 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
看到结果有种瞬间吊爆了的感觉。哪位大侠能发现问题!
作者:
蓝雨星空
时间:
2014-4-5 16:24
代码有两处有问题,第一处:o1 instanceof Worker && o1 instanceof Worker 这个问题不大。
第二处是关键: if(w1.getAge() == w1.getAge())
return 0;
自己改正即可。这些不是代码的问题,而是粗心造成的,写代码最重要的是要细心。新手应该培养良好的编程习惯。亲身体验,希望可以帮到你。
作者:
虎牛龙马
时间:
2014-4-5 18:48
蓝雨星空 发表于 2014-4-5 16:24
代码有两处有问题,第一处:o1 instanceof Worker && o1 instanceof Worker 这个问题不大。
第二处是关 ...
真细心啊!谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2