无法分配所有条目

时间:2018-07-23 12:08:52

标签: clojure

当我将 let subcate = ["brand_id": brandid!] as [String:Any] doseq映射应用于transient时,我始终只能获得8个条目。 如何获取所有条目?

java.util.HashMap

1 个答案:

答案 0 :(得分:2)

问题是,当ArrayMap的8元素阈值超过时,将创建一个新的HashMap-将is returned作为assoc!的返回值,并将其丢弃在代码中。

您应该在assoc!中的use the return value中使用瞬态结构,而不是在assoc!之后使用相同的对象引用:

(persistent! (reduce (fn [acc [k v]]
                       (assoc! acc k v))
                     (transient {}) tmp-hash))