在集合中设置允许重复值?

时间:2013-08-23 07:08:40

标签: java

public class TestSet {
  public static void main(String[] args){
    Set s = new LinkedHashSet();
    s.add("Windows");
    s.add("Mac");
    s.add("Mac");
    s.add("Unix");
    System.out.println(s); 
  }
}

根据defination .. set不应该允许重复值...当add方法试图插入重复值时...它应该返回false ....但为什么这段代码给出输出为[windows,mac ,unix]而不是错误??

3 个答案:

答案 0 :(得分:2)

如果此集合尚未包含指定的元素Set#add,则

true会返回false。如果值重复,则不会Exception

  

如果指定的元素尚不存在,则将其添加到此集合中   (可选操作)。更正式地,将指定的元素e添加到   如果集合中不包含元素e2(e == null?   e2 == null:e.equals(e2))。如果此集已包含元素,   调用使集合保持不变并返回false。结合   对构造函数的限制,这确保了永远不会   包含重复的元素。

Find more on Documentation

boolean result = s.add("Mac"); // would be true
boolean result1 = s.add("Mac");// would be false

答案 1 :(得分:0)

Set interface就像一个集合的数学抽象。无需抛出异常。

答案 2 :(得分:0)

您可以看到该组的大小。它将省略任何重复。这将在您的情况下打印3

System.out.println(s.size());