我很困惑(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/

10-11 20:49