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

Son*_*oth 6 clojure hashmap array-map

我有一些array-map我正在考虑的assoc价值观.在一定大小之后,返回的值是a PersistentHashMap而不是原始值PersistentArrayMap.我在几个网站上看到过这种行为.有没有办法强制插入订单甚至之后assoc

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

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

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

谢谢

ama*_*loy 8

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

  • 我打算建议保留条目映射和键的向量,以便您可以跟踪键的插入顺序 - 但看起来这正是这个库中的数据结构在引擎盖下的作用.感谢分享! (2认同)