ES6规范为键集合(Set,Map,WeakSet和WeakMap)提供了什么时间复杂度(大O表示)?
我的期望,我期望的大多数开发人员,是规范和实现将使用被广泛接受的高性能算法,在这种情况下Set.prototype.has
,add
并delete
在平均情况下都是O(1)。这同样适用于Map
和Weak–
等效物。
对我来说,实现的时间复杂性是否在例如ECMAScript 2015 Language Specification-6th Edition — 23.2 Set Objects中规定,并不是完全显而易见的。
除非我误解了(当然我确实很可能这样做),否则ECMA规范要求实现(例如Set.prototype.has
)必须使用线性时间(O(n))算法。令我惊讶的是,规范中没有要求或什至不允许使用性能更高的算法,并且我对解释为何如此的情况非常感兴趣。