如何获取clojure数组映射以在assoc之后维护插入顺序?

时间:2012-08-20 08:04:24

标签: clojure hashmap array-map

我有一个array-map,我assoc将一些值加入其中。在一定大小后,返回的值为PersistentHashMap而不是原始PersistentArrayMap。我在几个网站上看到过这种行为。有没有办法在assoc之后强制插入订单?

我有一个单独的函数,它将使用ash-map和一个键向量,并按此顺序返回带有键的“新”array-map,但这意味着对于每个assoc,我必须首先提取键,cons / conj新的键到向量,然后创建一个新的数组映射。看似kludgey,即使是用单独的函数编写的。

是否有更直接的语言支持方式来保持即使在大型(> 10,但<50)键阵列映射上的插入顺序?

如果它是相关的,我使用一个数组映射列表作为数据到一个incanter数据集,然后输出到excel。 save-xls函数保持键/列的顺序。

由于

1 个答案:

答案 0 :(得分:8)

您可以使用有序地图:https://github.com/flatland/ordered