Wie bekomme ich eine Clojure-Array-Map, um die Einfügereihenfolge nach Assoc beizubehalten?
ich habe einarray-map
was ich binassoc
einige Werte hinein. Nach einer bestimmten Größe lautet der zurückgegebene Wert aPersistentHashMap
eher als das OriginalPersistentArrayMap
. Ich habe über dieses Verhalten auf einigen Websites gelesen. Gibt es eine Möglichkeit, die Einfügereihenfolge auch nach zu erzwingenassoc
?
Ich habe eine separate Funktion, die eine übernehmen wirdash-map
und ein Vektor von Schlüsseln, und geben Sie eine "frische"array-map
mit Schlüsseln in dieser Reihenfolge, aber das bedeutet, dass ich für jedes Assoc zuerst die Schlüssel extrahieren, den neuen Schlüssel für den Vektor konservieren / konjizieren und dann eine neue Array-Map erstellen muss. Scheint kludgey, auch wenn in einer separaten Funktion geschrieben.
Gibt es eine direktere sprachunterstützte Möglichkeit, die Reihenfolge der Einfügungen auch auf Array-Maps mit großen Schlüsseln (> 10, aber <50) beizubehalten?
Falls es relevant ist, verwende ich eine Liste von Array-Maps als Daten in einem Incanter-Dataset und gebe sie dann aus, um zu übertreffen. Die Funktion save-xls behält die Reihenfolge der Schlüssel / Spalten bei.
Vielen Dank