我可以通过两种方式创建集合/映射/向量:
(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 输入序列)
这两种方式之间是否存在性能差异?
可能存在一种通用的习惯用法,以确定在某些情况下使用何种方式?
谢谢!