Java中的树集?
我很困惑(Java新手)
我知道:
TreeSet doesn't actually use equals() at all. It uses compareTo() instead - if compareTo() returns zero, that means the two objects are "equal" as far as the TreeSet is concerned.
太好了
所以我有:
public class User implements Comparable<User>
{
String Username;
String Password;
@Override
public int compareTo(User o)
{
return o.Username.compareTo(this.Username );
}
}
我还有:
public static void main(String[] args)
{
TreeSet<User> ts = new TreeSet<User>();
User u = new User();
u.Username="u";
ts.add(u);
User u1 = new User();
u1.Username="u";
ts.add(u1); //<---------------
System.out.print(u1.compareTo(u)); //0
}
查看调试:compareTo
-返回“0”。(顺序相同)
如果是:
问题
当我插入2个“相同顺序”的元素时,为什么不出现异常
# 1 楼答案
请参见} 方法的文档
TreeSet
中^{第二个元素(u1)实际上并没有添加到
TreeSet
中# 2 楼答案
将两个相同的元素添加到任何
Set
时,也没有例外。第一个加法将返回true
而第二个将返回
false
请注意,当
compareTo
与equals
不一致时,您的测试很难看到会发生什么,因为您依赖于java.lang.String
的compareTo
方法,这与equals
是一致的