2015-06-25 66 views
0

HashSet的內部調用HashMap中,以避免在執行的Hashset如何避免重複

public HashSet() { 
    map = new HashMap<E,Object>(); 
    } 

public boolean add(E e) { 
return map.put(e, PRESENT)==null; 
} 

對於實例

代碼重複:

Set hashSet = new HashSet(); 
hashSet.add("Abraham"); 
hashSet.add("Billy");  
hashSet.add("Billy");  
System.out.println("HashSet Value " +hashSet.toString()); 

輸出:

HashSet Value [Billy, Abraham] 
+0

怎麼樣put方法的要素是什麼? –

+0

你的意思是All Set Implementation避免使用Map的重複public boolean add(E e){ \t return map.put(e,PRESENT)== null; } – Martin

回答

1

Map接口,每個密鑰也是唯一的(java docs):

將鍵映射到值的對象。 地圖不能包含重複 鍵;每個鍵可以映射到最多一個值。

這意味着,在HashMap已經照顧避免重複鍵,這是的HashSet

+0

如果我們限制hashmap中的重複,它是否等同於HashSet? – Martin

+0

@Martin我不遵循你所要求的。一個Map比Set更「強大」,因爲它也將每個鍵映射到一個值,但是我們可以使用Map而不是Set - 它將不太可讀,但仍然可以工作。 – amit

+0

我想了解HashSet的用途 – Martin