我在代码中定义了一个地图,如:
(def templates {:list1 {:create_time "create_time"
:recharge_amount "recharge"
:invest_amount "invest"
;; something else
}
:list2 {:create_time "ct"
;; something else
}
;;something else
})
我希望地图按照我定义的顺序保持顺序。 怎么解决?
答案 0 :(得分:5)
如果您的数据无法更改,则可以使用array-map
:
(def templates
(array-map
:list1 {}
:list2 {}
:list3 {}))
(seq templates)
;; => ([:list1 {}] [:list2 {}] [:list3 {}])
(keys templates)
;; => (:list1 :list2 :list3)
为什么要求具有常量数据的约束?好吧,在基本上任何修改操作之后,数组映射可能会变成哈希映射(如果它的内容变得太大而无法提供有效的查找)。
或者,如果您对外部依赖项开放,则可以看到amalloy/ordered是否符合您的需求。