HashSet常量時間操作的大小操作如何?
我讀過包含和大小操作是恆定的時間。
雖然我明白如何包含恆定時間的操作,不會將大小操作與元素數量成比例(不是線性)?HashSet大小操作
1
A
回答
2
簡短的回答 - 它被緩存了。
較長的答案: HashSet
是Set
實現,持有HashMap
,所有的值是相同的「虛擬價值」。這是size()
方法只返回地圖的size()
。如果你看看HashMap
的實現,你會發現它有一個size
成員。將元素添加到地圖(例如,使用put
或putAll
)可增加size
,並從中刪除元素可減少size
。這樣,因爲size
始終保持最新狀態,所以在調用size()
時可以簡單地返回,保證持續執行時間。
2
HashSet內部存儲它有多少個元素。
wouldnt size operation是否與元素數成比例(非線性)?
如果沒有存儲在現場記錄保存,大小()將正比於後盾哈希表的大小,而不是元素的數量,因爲你必須在掃描所有的條目,看看是否有東西。除了散列表被分配爲顯着太大或者刪除了很多元素之外,這些往往是相同的(2倍以內)。
相關問題
- 1. Hashset大小問題
- 2. Java HashSet錯誤的大小
- 3. 未指定操作大小
- 4. 操作欄圖標大小
- 5. IMap Hazelcast大小操作
- 6. HashSet方法中的操作順序add()
- 7. AppCompat操作欄大小與ActionBarSherlock的大小不同
- 8. 多個小型DOM操作與一個大型DOM操作
- 9. FindFirstFileEx不操作區分大小寫
- 10. 的DataGridView自動調整大小操作
- 11. WCF操作合同和清單大小
- 12. movq的操作數大小不匹配
- 13. 不區分大小寫的操作
- 14. 在操作後增加SQLITE的大小
- 15. JavaFx BorderPane區域大小操作
- 16. 試圖更改操作欄大小
- 17. 更改操作表的按鈕大小?
- 18. MongoDB/Morphia大小查詢操作失敗?
- 19. 如何在Struts2中驗證HashSet的大小是否大於零?
- 20. 什麼是各種小HashSet和1個大HashSet之間的搜索區別?
- 21. 大會$操作
- 22. HashSet的最大尺寸
- 23. 爲什麼Docker操作系統映像大小如此之小?
- 24. 爲REDUCE操作創建縮小大小的通信器
- 25. 重大刪除操作後Neo4J存儲大小增加
- 26. 最小最大堆中的刪除最大值操作
- 27. java最大堆大小和操作系統頂部輸出
- 28. 'Set = new HashSet'或'HashSet = new Hashset'?
- 29. 操作系統中頁面大小和頁面大小之間的關係
- 30. C++/ASM - 「操作數大小衝突」,「不正確的操作數類型」