如果散列表是一個鏈表元素的數組,並且散列碼是數組中元素的索引,那麼爲什麼散列表不會保持插入的順序?爲什麼散列表不能保持插入順序?
-7
A
回答
1
簡言之,一個哈希表(字典)不保持插入的總訂單,因爲它並不需要。抽象數據類型支持ammortized O(1)插入,刪除和搜索,但不支持枚舉,並且不對鍵集中的元素施加任何順序。
HashTable實現了一個字典,並且不會保留插入的總順序,因爲具有不同哈希值的插入映射到不同的鏈。在使用鏈接的字典實現的情況下,具有碰撞哈希的鍵存儲在鏈接列表中(如問題中所述),並且確實按照插入的順序進行維護。還有許多其他(更快)的字典實現沒有這個屬性。請參閱thees lecture筆記以瞭解有關開放尋址(不保留碰撞元素的插入順序的字典實現模式)的討論。特別是,使用雙散列的開放尋址不會對存儲在密鑰集中的元素施加任何順序。
0
因爲它的設計,這樣,試圖LinkedHashSet
代替
相關問題
- 1. 爲什麼listFiles()不能保證順序?
- 2. 插入表中的行,並保持列表的順序
- 3. 爲什麼不能在散列表中存儲散列表?
- 4. 基於插入順序迭代散列?
- 5. 爲什麼列表保持不變?
- 6. 爲什麼我不能以散列格式打印散列表?
- 7. json.simple有什麼用?它能維持插入json的順序嗎?
- 8. 爲什麼memcached不支持列表,設置或散列表?
- 9. JPA @ElementCollection:如何保持插入順序
- 10. Perl爲什麼不支持雙引號中的散列插值?
- 11. 爲什麼bindvalue不能插入表中?
- 12. 爲什麼在MultiMap中沒有保存插入順序?
- 13. Python列表是否保證其元素保持它們插入的順序?
- 14. 爲什麼dict2xml在輸入字典中不保持相同的順序?
- 15. 保持列表的順序node.js
- 16. ,保留插入順序
- 17. 爲什麼SQL觸發器不按順序插入行?
- 18. 哪個數據結構用於保持唯一的插入順序的列表
- 19. 爲什麼我不能在c#列表中保存列表?
- 20. LINQ - 合併列表元素保持順序(功能思維)
- 21. 「插入順序保存在集合中」是什麼意思?
- 22. 插入到散列表中
- 23. 爲什麼我不能插入?
- 24. 爲什麼插入功能不工作?
- 25. 爲什麼Perl的「排序」將這些散列鍵按數字順序排列?
- 26. 爲什麼我的表單不能保持其大小?
- 27. 爲什麼Odoo不插入這兩列?
- 28. 爲什麼執行該功能後,此列表不能「保存」?
- 29. 休眠不保持堅持順序
- 30. MVC3下拉列表控件不保持狀態,爲什麼?
因爲它是散列值。哈希不保持排序。 – EJP
http://en.wikipedia.org/wiki/Hash_table –
順便說一句,雖然可預測順序是[LinkedHashMap]的主要用例(http://docs.oracle.com/javase/8/docs/api/java /util/LinkedHashMap.html) –