设置不能包含重复项。但确实如此

时间:2014-02-25 21:15:26

标签: java android

documentation states集不能包含重复项

但是这段代码工作正常:

Set<String> vmv = new TreeSet<String>();
vmv.add("a");
vmv.add("a");
System.out.println(vmv.toString());

我刚刚添加了一份副本。有人可以解释一下。

2 个答案:

答案 0 :(得分:5)

使用相同的值调用add()两次不会再次添加它,检查返回的boolean,您会看到第二次false,或检查集合的大小,以验证它在第二次之后没有改变:

Set<String> vmv = new TreeSet<String>();

System.out.println(vmv.add("a")); // prints true
System.out.println(vmv.size());   // prints 1

System.out.println(vmv.add("a")); // prints false
System.out.println(vmv.size());   // prints 1

答案 1 :(得分:2)

从同一页面进一步向下:

  

add方法将指定的元素添加到Set(如果它尚不存在)并返回一个布尔值,指示是否添加了元素。

......这正是它正在做的事情。当您打印最终集时,您应该只看到“复制”元素的一个副本。