clojure中的assoc:内部构件说明
以下是assoc的代码:clojure中的assoc:内部构件说明,clojure,immutability,Clojure,Immutability,以下是assoc的代码: (def assoc (fn assoc ([map key val] (. clojure.lang.RT (assoc map key val))))) clojure.lang.RT的含义是什么 在向量/映射上调用assoc有多复杂 访问由assoc创建的结构的复杂性是什么 clojure.lang.RT是clojure的主要运行时类。它拥有构成语言核心的大部分方法 assoc是所有关联数据结构的O(1),包括向量和映射array map对于前几个项开始
(def assoc
(fn assoc
([map key val] (. clojure.lang.RT (assoc map key val)))))
clojure.lang.RT
的含义是什么assoc
有多复杂assoc
创建的结构的复杂性是什么clojure.lang.RT
是clojure的主要运行时类。它拥有构成语言核心的大部分方法assoc
是所有关联数据结构的O(1),包括向量和映射array map
对于前几个项开始是线性的,然后将其自身提升为一个hash map
,因此它也是O(1)。当然,如果需要,您可以使用非O(1)的东西实现关联接口assoc
创建的地图或向量中的项目的访问时间是O(log32 N)。因为这些数据结构在~2^32个项目的大小上有一个上限,所以最大树深度为6,这实际上是恒定的时间Clojure的关联数据结构在空间中都是O(nLog n)(因为它们是树)。我试图了解
assoc
如何在地图上修改现有条目?你知道我在哪里可以找到它的材料吗?我想这一个(特别是20分钟)从第二个开始