读书人

为什么答案是A呢? 可以解释一下吗?解

发布时间: 2012-01-06 22:55:18 作者: rapoo

为什么答案是A呢? 可以解释一下吗?
public class Drink implements Comparable{
public String name;
public int compareTo(Object o){
return 0;
}

and:

Drink one=new Drink();
Drink two=new Drink();
one.name= "Coffee ";
two.name= "Tea ";
TreeSet set=new TreeSet();
set.add(one);
set.add(two);

A programmer iterates over the TreeSet and prints the name of each Drink object.

what is the rusult?

A Tea
B.Coffe
C.Coffe
Tea
D.Compilation fails.
E.the code runs with no output
F.An exception is thrown at runtime


[解决办法]
public int compareTo(Object o){
return 0;
}
compareTo()返回0,表示两个对象相同.
Set中不允许存在相同/重复的对象,后set()的对象如果和之前set()的对象相同(通过compareTo比较),那么将覆盖原来的对象
所以Set中实际上只有一个Drink的实例,就是Tea.
因此选A
[解决办法]
看了半天觉得这题目怪怪的.只能靠自己的理解了.

在实现 Comparable接口后再重写compareTo(Object o)

因为compareTo方法只有一个返回就是0.那就是无论如何都是会让这两个值相等.

如果是sort方法排序这两个对象的话,那肯定这两个对象是相等的.

我自己的理解是推广而言,那这里就是两者相等了...偶也说不清楚..觉得有点迷糊.关键应该是在compareTo里.可能是把前者和后者比较,因为返回的肯定是0.两者肯定相等,那前者就被等于了后者....有点感觉像是在凑答案

[解决办法]
学习
[解决办法]
楼上的诸位,你们确定这个题选A,而不是B吗?
[解决办法]
sey不是要保证不能有相同的元素啊..
它是根据compareTo()来判断还是根据equals()来判断的啊..!!!!

我运行过了,答案是B
[解决办法]
应该是b,add(one)起作用,add(two)的时候,经过判断,就不会加进去了应该!!所以用迭代器的时候,只有第一次加进去的!!!!
[解决办法]
是A
[解决办法]
应该是A。因为TreeSet的内部是由一个TreeMap来支持的,该TreeMap的Key就是TreeSet的元素。调用TreeSet的add()函数其实相当于调用TreeMap的put()函数。而put函数会将以前的值替换掉(如果有重复的话)。
[解决办法]
A, 学习一下。

读书人网 >J2SE开发

热点推荐