使用工厂方法Set.of()和Map.of()创建的集合和地图的时间复杂度是多少?

Vit*_*lii 1 java collections java-9

在Java中,当我创建一个setwith Set.of()mapwith with Map.of()时,containsand get操作的时间复杂度是多少?是O(1)吗?

Stu*_*rks 5

Set.ofMap.ofAPI的返回JDK和私营部门实现的实例。规范不能保证这些实现的性能。但是,API确实会返回有关可以进行性能说明的特定实现。因此,该问题是合理的,并且与(假设的)问题(例如“什么是什么表现Map.get?”)不同。这是一个很糟糕的问题,因为有许多不同的Map实现。

无论如何,后面的Set.of(对于大于两个的大小)和Map.of(对于大于一个的大小)的实现都使用简单的开放式寻址哈希方案,并使用线性探测来解决冲突。如果元素的(键)哈希值合理分布,则Set.containsMap.get操作为O(1)。