我很困惑(Java新手)
我read那:
TreeSet实际上根本不使用equals()。它使用compareTo()
相反-如果compareTo()返回零,则表示两个对象是
就TreeSet而言,“相等”。
大。
所以我有 :
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个“相同顺序的”元素时,为什么没有出现异常?
最佳答案
只需参见add()
中TreeSet
方法的文档即可。
如果此集合已包含该元素,则调用将使该集合保持不变并返回false。
第二个元素(u1)实际上未添加到TreeSet
中。
关于java - 在Java中澄清TreeSet?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25605887/