将 java.util.HashSet 转换为 Clojure 集的最佳方法
best way to convert java.util.HashSet to Clojure set
出于兼容性目的的数据查询 return java.util.HashSet
。我想使用 clojure.set
函数,例如在查询结果集上设置差异。目前,我正在使用 (set datomic_result)
将结果集转换为 Clojure 集。有替代方案吗?
我不建议您相信 returned 值是一个 java.util.Set
,这是一个实现细节(根据 Datomic documentation,return 类型是 java.util.Collection
).
您可以通过将集合操作直接应用于 returned 集合而不是强制应用于集合来获得更好的性能。例如:
;; set difference
(into #{} (remove to-remove) query-result)
;; set intersection
(into #{} (filter to-keep) query-result)
;; set union
(into my-set query-result)
into lets you leverage both Transients and Transducers 的使用,可以显着提高大输入的性能。
出于兼容性目的的数据查询 return java.util.HashSet
。我想使用 clojure.set
函数,例如在查询结果集上设置差异。目前,我正在使用 (set datomic_result)
将结果集转换为 Clojure 集。有替代方案吗?
我不建议您相信 returned 值是一个 java.util.Set
,这是一个实现细节(根据 Datomic documentation,return 类型是 java.util.Collection
).
您可以通过将集合操作直接应用于 returned 集合而不是强制应用于集合来获得更好的性能。例如:
;; set difference
(into #{} (remove to-remove) query-result)
;; set intersection
(into #{} (filter to-keep) query-result)
;; set union
(into my-set query-result)
into lets you leverage both Transients and Transducers 的使用,可以显着提高大输入的性能。