If the thing you want to index by is not unique, you could do...
something like:
(def m (atom (sorted-map)))
(def rm (atom (sorted-map)))
(defn add
[k v]
(swap! m assoc k v)
(swap! rm assoc v (conj (get @rm v []) k)))
(add 1 "bbb")
(add 2 "ccc")
(add 3 "aaa")
(add 4 "aaa")
; @rm is now {"aaa" [3 4], "bbb" [1], "ccc" [2]}
This seems simpler to code than a sorted vector index, but would
require more memory. However you can quickly lookup by key or by index
or by range.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---