2013-08-23 30 views
-1
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); 
    } 
} 

根據定義..設置不應該允許重複值...當add方法試圖插入重複值時...它應該返回false ....但爲什麼這個代碼給出輸出爲[窗口,mac,unix]而不是錯誤??在集合中設置允許重複的值?

+3

是的,'第三次調用s.add(「蘋果」)'將返回假 - 但不會從集中刪除它。 –

回答

0

設置界面中,就像一組的數學抽象。無需拋出異常。

2

Set#add返回true如果這個集合還沒有包含指定元素else false。如果價值重複,它不會推銷Exception

如果指定的元素不存在 (可選操作),則將該元素添加到此集合中。更正式地說,如果該集合不包含元素e2使​​得(e == null? e2 == null:e.equals(e2)),則將該指定的元素e添加到該集合中的 。如果這個集合已經包含元素 ,則該呼叫將保持集合不變並返回false。在組合 與構造函數的限制,這確保集合從不 包含重複的元素。

Find more on Documentation

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

Subhrajyoti Majumder非常感謝你...現在的概念是明確的 – sandeep

+0

建立你的概念的最佳方式是閱讀文檔:) 記住它;) –

0

你可以看到set.It將省略任何duplicates.This的規模將在你的情況下打印3

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