如何在Clojure中迭代TreeMap?

时间:2012-08-10 13:25:03

标签: java data-structures clojure

我使用Clojure 1.1.0,我想迭代TreeMap的所有元素。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

此外,您还可以通过map宏使用for功能和列表推导来处理java.util.TreeMap中的每个条目:

> (def t (new java.util.TreeMap {:a 1 :b 2}))

;; reverse all the pairs
> (map (fn [e] [(val e) (key e)]) t)
([1 :a] [2 :b])

;; same thing, but with destructuring/for
> (for [[k v] t] 
       [v k])
([1 :a] [2 :b])

答案 1 :(得分:3)

您可以使用seq / doseq,就像使用普通的clojure地图一样

(doseq [entry treeMap] (
    prn (key entry) (val entry))
)

其中treeMap是您的TreeMap个实例。