java - 如何在 Clojure 中创建一个 ArrayList

标签 java arraylist clojure

我需要在 clojure 中创建和填充 ArrayList,并将其传递给 Java API。 有人可以帮助解释为什么以下两种方法存在差异(以及为什么其中一种方法不起作用)。

;;; this works
(defn make-an-array-list []
  (let [alist (java.util.ArrayList.)]
    (loop [x 0] (when (< x 6) (.add alist x) (recur (inc x)))) alist))
;;; ==> [0 1 2 3 4 5]

;;; this does not work
(defn make-an-array-list2 []
  (let [alist (java.util.ArrayList.)]
    (for [n (range 6)] (.add alist n)) alist))
;;; ==> []

或者,有什么建议可以代替上述方法吗?

最佳答案

更好的是,只需编写 (ArrayList. (range 6))。或者,如果 Java 代码编写得很好,并且只需要一个 Iterable、List 或 Collection——任何比 ArrayList 更不具体的东西——你可以简单地返回 (range 6)

关于java - 如何在 Clojure 中创建一个 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20947130/

相关文章:

java - "TransactionRequiredException: no transaction is in progress"即使应用事务拦截器 - hibernate-5 和 spring-4.3

在 Jenkins 中运行 mvn 测试时,maven-surefire-plugin 的 Java 版本问题

java - 为什么我的 Eclipse 程序终止?

java - 如何在没有ListView的ArrayList中添加OnitemClickListener

clojure - 调试 pedestal.io 应用程序的正确方法是什么?

java - 在jsp中使用枚举实例内部类

java - 初始化 ArrayList<Long>

java - 如何将数组添加到 arrayList 而不替换列表中的其他数组

xml - 如何仅从 clojure 中的嵌套 XML 中过滤某些值?

vector - 计算自定义 Clojure 向量中的重复项