2012-09-28 30 views
0

如果您將得到一組記錄(比如,與ID,姓名和年齡字段的用戶記錄),你需要它 集合發送到簡單遍歷的看法。那麼哪個集合會更適合在HashMap和HashSet之間使用 以及爲什麼?你會在User類中使用什麼散列碼生成代碼來提高效率?應該用什麼HashMap或HashSet?

+2

如果你不滿意這些答案,更新問題講清楚,你真的想知道和/或添加評論什麼。不要簡單地重新發布問題。您的轉貼將被降低投票並關閉,您將失去聲望點。 –

回答

1

一個HashSet本身就是HashMap的實現,因此最終它並沒有真正使多大的差別。但是,由於您正在處理用戶,我認爲最終您需要通過ID訪問User對象。

假設每個用戶都有一個唯一的ID,您可以使用一個ID爲HashMap的關鍵字和整個User對象作爲值。這將允許您遍歷和訪問特定的用戶數據。

+4

HashSet不是HashTable的實現,但它實現了Set 接口。 –

+0

@ArunKumar:如果你調試'HashSet ',你會注意到這樣的結構:'HashMap '。對於您在該集合中拋出的每個項目,它將其作爲「HashMap」的關鍵字添加並添加一個虛擬對象作爲值。當我說實現時,我並不是指接口,而是'HashSet'類的內部工作。 – npinti

+0

'HashSet'不是'HashMap'的實現。即使你說'HashSet'使用內部的'HashMap'來存儲數據,它不是一個實現,而是一個使用關聯。如果'HashSet'是一個'HashMap'的實現,那麼你可以有'HashMap x = new HashSet'這樣的東西,這是錯誤的。 –

1

HashMap和HahSet使用不同勢數據結構來存儲的對象。

在您存儲對象鍵值

HashSet的一個HashMap中只存儲爲對象。


以下是一些他們之間的區別:


  1. HashSet的是實現Set接口。 HashMap是Map接口的實現。
  2. HashSet僅存儲值。 HashMap以關鍵值 對的形式存儲數據。
  3. 的HashSet不允許重複的值/對象的HashMap允許 重複值/對象,但不會允許重複鍵。
  4. HashSet比hashmap慢。 HashMap中比HashSet的 更快,因爲這些值被關聯到唯一密鑰
  5. 在HashSet的,成員對象被用於計算哈希碼值 其可以是相同的兩個對象,以便等於()方法用於 檢查是否相等,如果它返回false表示兩個對象 不同。在HashMap中,hashcode值是使用key對象計算的。
相關問題