gpt4 book ai didi

java - 将 Java 集合转换为 Clojure 数据结构

转载 作者:搜寻专家 更新时间:2023-10-31 08:13:57 24 4
gpt4 key购买 nike

我正在使用返回 java.util.LinkedHashSet 的方法创建 Java API 的 Clojure 接口(interface)。

首先,Clojure 惯用的处理方式是将 LinkedHashSet 转换为 Clojure 数据结构吗?

其次,将 Java 集合转换为 Clojure 数据结构的最佳方法是什么?

最佳答案

有很多选择,因为 Clojure 可以很好地处理 Java 集合。这完全取决于您要在 Clojure 中使用的数据结构。

这里有一些例子:

;; create a HashSet
(def a (java.util.HashSet.))
(dotimes [i 10] (.add a i))

;; Get all the values as a sequence
(seq a)
=> (0 1 2 3 4 5 6 7 8 9)

;; build a new HashSet containing the values from a
(into #{} a)
#{0 1 2 3 4 5 6 7 8 9}

;; Just use the HashSet directly (high performance, no copy required)
(.contains a 1)
=> true
(.contains a 100)
=> false

关于何时使用这些,我建议以下建议:

  • 如果您尝试包装一个 Java 库并提供一个干净的 Clojure API,那么我建议您转换为等效的 Clojure 数据结构。这是 Clojure 用户所期望的,您可以隐藏可能困惑的 Java 互操作细节。作为奖励,这将使事物不可变,这样您就不会在使用 Java 集合时冒着发生变异的风险。
  • 如果您只想快速高效地使用 Java API,只需直接在 Java 集合上使用 Java 互操作即可。

关于java - 将 Java 集合转换为 Clojure 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9275467/

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