这是assoc
的代码:
(def assoc
(fn assoc
([map key val] (. clojure.lang.RT (assoc map key val)))))
clojure.lang.RT
是什么意思? assoc
的复杂性是什么? assoc
创建的结构的复杂性是什么? 最佳答案
clojure.lang.RT
是Clojure RunTime主类。它具有构成语言核心的大多数方法。 assoc
对于包括矢量和地图在内的所有关联数据结构均为O(1)。 array-map
从头几项开始线性,然后提升为hash-map
,因此也是O(1)。当然,如果需要,您可以使用非O(1)的东西来实现关联接口。 assoc
创建的地图或矢量中项目的访问时间为O(log32 N)。由于这些数据结构在〜2 ^ 32项的大小上具有上限,因此保留了最大树深度为6的有效树长Clojure的关联数据结构在空间中都是O(nLog n)(因为它们是树)。