gpt4 book ai didi

java - Java 中的 TreeSet - 澄清?

转载 作者:行者123 更新时间:2023-12-01 17:05:53 25 4
gpt4 key购买 nike

我很困惑(Java 新手)

我已经read那:

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 个“相同顺序”的元素时没有出现异常?

最佳答案

只需查看 add() 的文档TreeSet 中的方法。

If this set already contains the element, the call leaves the set unchanged and returns false.

您的第二个元素 (u1) 并未实际添加到 TreeSet 中。

关于java - Java 中的 TreeSet - 澄清?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25605887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com