gpt4 book ai didi

java - 这是将 Java 映射转换为 native Clojure 映射以进行排序的最佳方法吗?

转载 作者:行者123 更新时间:2023-11-29 08:09:55 26 4
gpt4 key购买 nike

如果这是最好(或好的)解决方案,有人可以准确解释它在做什么吗?

(sort
(reduce (fn [x [y z]] (assoc x y z)) {} (System/getProperties)))

它可以用在什么地方,例如打印系统属性:

(def p
(sort
(reduce (fn [x [y z]] (assoc x y z)) {} (System/getProperties))))

(defn pnv [nv] (println (str (key nv) "=\"" (val nv) "\"")))

(doseq [nv p] (pnv nv))

如果这不是一个好的方法,请提供更好的方法。谢谢

我知道我能做到:

(doseq [nv (System/getProperties)] (pnv nv))

但是排序好像不行:

(doseq [nv (sort (System/getProperties))] (pnv nv))
ClassCastException java.util.Hashtable$Entry cannot be cast to java.lang.Comparable clojure.lang.Util.compare (Util.java:104)

解决方案,由 amalloy 提供:

(doseq [nv (into (sorted-map) (System/getProperties))] (pnv nv))

最佳答案

map 通常不会排序 - 当然,您通过向 {} 添加条目获得的任何 map 都不会排序。但是,Clojure 和 Java 都提供了排序映射。因此,如果您想要一个具有默认排序顺序的排序 map ,您只需执行 (into (sorted-map) the-other-map)。这适用于 java.util.Map 以及 Clojure 类型,所以它应该是您所需要的。

关于java - 这是将 Java 映射转换为 native Clojure 映射以进行排序的最佳方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com