[英]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.