如果您將得到一組記錄(比如,與ID,姓名和年齡字段的用戶記錄),你需要它 集合發送到簡單遍歷的看法。那麼哪個集合會更適合在HashMap和HashSet之間使用 以及爲什麼?你會在User類中使用什麼散列碼生成代碼來提高效率?應該用什麼HashMap或HashSet?
回答
一個HashSet
本身就是HashMap
的實現,因此最終它並沒有真正使多大的差別。但是,由於您正在處理用戶,我認爲最終您需要通過ID訪問User
對象。
假設每個用戶都有一個唯一的ID,您可以使用一個ID爲HashMap
的關鍵字和整個User
對象作爲值。這將允許您遍歷和訪問特定的用戶數據。
HashSet不是HashTable的實現,但它實現了Set
@ArunKumar:如果你調試'HashSet
'HashSet'不是'HashMap'的實現。即使你說'HashSet'使用內部的'HashMap'來存儲數據,它不是一個實現,而是一個使用關聯。如果'HashSet'是一個'HashMap'的實現,那麼你可以有'HashMap x = new HashSet'這樣的東西,這是錯誤的。 –
HashMap和HahSet使用不同勢數據結構來存儲的對象。
在您存儲對象鍵值對
在HashSet的一個HashMap中只存儲鍵爲對象。
以下是一些他們之間的區別:
- HashSet的是實現Set接口。 HashMap是Map接口的實現。
- HashSet僅存儲值。 HashMap以關鍵值 對的形式存儲數據。
- 的HashSet不允許重複的值/對象的HashMap允許 重複值/對象,但不會允許重複鍵。
- HashSet比hashmap慢。 HashMap中比HashSet的 更快,因爲這些值被關聯到唯一密鑰
- 在HashSet的,成員對象被用於計算哈希碼值 其可以是相同的兩個對象,以便等於()方法用於 檢查是否相等,如果它返回false表示兩個對象 不同。在HashMap中,hashcode值是使用key對象計算的。
- 1. 我應該使用什麼鍵爲HashMap?
- 2. 什麼時候應該使用HashSet <T>類型?
- 3. 當達到HashMap或HashSet的最大容量時會發生什麼?
- 4. 爲什麼HashSet實現中的HashMap瞬態?
- 5. 爲什麼HashSet的作爲HashMap的內部實現
- 6. 我應該使用什麼? AJAX或jQuery?
- 7. 應該用什麼New()或var in go?
- 8. 我應該用什麼GTK +或QT
- 9. 我應該使用什麼,UITableView或UICollectionView?
- 10. 'Set = new HashSet'或'HashSet = new Hashset'?
- 11. Java HashMap vs hashset性能
- 12. 如何在java collection hashmap或hashset或arraylist中存儲webtable?
- 13. 使用HashSet類型的HashMap值
- 14. 爲什麼或者爲什麼不應該使用Java 7?
- 15. 什麼應該用於iOS應用開發或迅速反應?
- 16. 使用與HashSet對應的固定Key創建HashMap。出發點
- 17. 我應該選擇什麼 - JSON或SQLite?
- 18. 爲什麼HashSet被排序?
- 19. 我應該在ListView中使用什麼適配器來使用HashMap
- 20. 什麼VisualStateManager應該用於?
- 21. HashSet或HashMap沒有在新類中定義hashCode()方法
- 22. 爲什麼不std :: noskipws工作,或者它應該做什麼?
- 23. 內存泄漏與Android上的HashMap/HashSet
- 24. 是通過HashMap實例HashSet實現
- 25. Java - HashMap和HashSet不支持Object.hashCode()?
- 26. 在HashSet/HashMap中改變對象的hashCode
- 27. Java:ListList的ArrayList,Map的HashMap和Set的HashSet?
- 28. 帶HashMap的HashSet顯示錯誤的值
- 29. 檢查HashSet/HashMap是否包含對象
- 30. 如何放置一個HashMap的HASHSET INSIDE?
如果你不滿意這些答案,更新問題講清楚,你真的想知道和/或添加評論什麼。不要簡單地重新發布問題。您的轉貼將被降低投票並關閉,您將失去聲望點。 –