使用工厂方法 Set.of() 和 Map.of() 创建的集合和映射的时间复杂度是多少?
What is a time complexity for sets and maps created with a factory methods Set.of() and Map.of()?
在 Java 中,当我用 Set.of()
创建一个 set
或用 Map.of()
创建一个 map
时,[=16 的时间复杂度是多少? =] 和 get
操作?是 O(1) 吗?
Set.of
和 Map.of
API return JDK 私有实现的实例。规范不保证这些实现的性能。但是,API 会 return 特定实现关于可以做出哪些性能声明。因此,这个问题是合理的,并且不同于 "What is the performance of Map.get
?" 这样的(假设的)问题,后者是一个糟糕的问题,因为有许多不同的 Map
实现。
在任何情况下,Set.of
(对于大于 2 的大小)和 Map.of
(对于大于 1 的大小)背后的实现使用一个简单的开放寻址散列方案和线性探测来解决冲突. Set.contains
和 Map.get
操作是 O(1) 如果元素的(键)散列合理分布。
在 Java 中,当我用 Set.of()
创建一个 set
或用 Map.of()
创建一个 map
时,[=16 的时间复杂度是多少? =] 和 get
操作?是 O(1) 吗?
Set.of
和 Map.of
API return JDK 私有实现的实例。规范不保证这些实现的性能。但是,API 会 return 特定实现关于可以做出哪些性能声明。因此,这个问题是合理的,并且不同于 "What is the performance of Map.get
?" 这样的(假设的)问题,后者是一个糟糕的问题,因为有许多不同的 Map
实现。
在任何情况下,Set.of
(对于大于 2 的大小)和 Map.of
(对于大于 1 的大小)背后的实现使用一个简单的开放寻址散列方案和线性探测来解决冲突. Set.contains
和 Map.get
操作是 O(1) 如果元素的(键)散列合理分布。