我可以使用两种方式创建集合/映射/向量
(into #{} xs) ;; creates PersistentHashSet
(set xs) ;; creates PersistentHashSet
(into {} xs) ;; creates PersistentArrayMap or PersistentHashMap (depends on xs size)
(apply hash-map xs) ;; creates PersistentHashMap
(into [] xs) ;; creates PersistentVector
(vec xs) ;; creates PersistentVector
(into r xs)
- 通过 conj! 操作一次一堆将输入序列逐个添加到传递的结果集合中(使用 transient/persistent 技巧)
(ctor xs)
- 精确定义结果数据结构类型
- 将 xs 序列作为参数传递给构造函数(这是一个静态 Java 函数),所以每个构造函数都可以定义其自己的创建逻辑(可能不是逐个 conj 输入序列)
这两种方式在性能上有区别吗?
也许有一个既定的惯用表达式来说明何时使用哪个?
谢谢!