![](/img/trans.png)
[英]Does a Java compiler optimize ad hoc instances of `Set.of`, `List.of`, and `Map.of` in loops as constants
[英]What is a time complexity for sets and maps created with a factory methods Set.of() and Map.of()?
在Java中,當我創建一個set
用Set.of()
或map
與Map.of()
什么是時間復雜度的contains
和get
操作? 是O(1)嗎?
Set.of
和Map.of
API返回JDK私有實現的實例。 規范不能保證這些實現的性能。 但是,API確實會返回有關可以進行性能說明的特定實現。 因此,該問題是合理的,並且不同於(假設的)問題,例如“ Map.get
的性能Map.get
?” 這是一個很糟糕的問題,因為有許多不同的Map
實現。
無論如何, Set.of
(對於大於2的大小)和Map.of
(對於大於1的大小)后面的實現都使用簡單的開放式尋址哈希方案,並通過線性探測來解決沖突。 如果元素的(鍵)哈希值分布合理,則Set.contains
和Map.get
操作為O(1)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.