Карта, которая хранит свои ключи в том порядке, в котором они были добавлены в - PullRequest
3 голосов
/ 17 ноября 2010

Существует ли структура данных в Clojure, которая может соответствовать этим требованиям:

  • представляют пары ключ-значение, т.е. быть картой;
  • get операция использует меньше, чем O(n);
  • сохраняет ключи в порядке их добавления.

Ответы [ 2 ]

3 голосов
/ 17 ноября 2010

Я тоже нуждался в этом. Я обычно соглашался на карту + последовательность (которая содержит порядок ключей). Вы можете пойти непостоянно и использовать LinkedHashMap, но я думаю, что Бог убьет котенка, если вы сделаете это.

Соответствует ли реализация дерева пальца Криса Хаузера ?

0 голосов
/ 17 ноября 2010

user=> (sorted-map-by (fn [_ _] -1) :a 1 :b 2 :c 3 :d 4)
{:d 4, :c 3, :b 2, :a 1}

Используйте отсортированную карту с компаратором, который всегда возвращает -1.Самая новая запись будет в начале карты, а самая старая в конце.

Неправильный ответ.Смотрите комментарии ниже.

...