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]而不是错误??
答案 0 :(得分:2)
Set#add
,则 true
会返回false
。如果值重复,则不会Exception
。
如果指定的元素尚不存在,则将其添加到此集合中 (可选操作)。更正式地,将指定的元素e添加到 如果集合中不包含元素e2(e == null? e2 == null:e.equals(e2))。如果此集已包含元素, 调用使集合保持不变并返回false。结合 对构造函数的限制,这确保了永远不会 包含重复的元素。
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());