list - Clojure - 将列表转换为 Java 数组

标签 list data-structures clojure java-interop

除了首先将其转换为向量并使用 之外,是否有任何惯用的方法将 Clojure 列表转换为 Java 数组?成阵列 (意思是,除 (into-array (vec my-list)) 之外的东西,因为我不想要额外的开销)?

最佳答案

你的问题似乎是基于一个错误的前提。 into-array 不需要采用向量,它采用可排序的值。文档 ( http://clojuredocs.org/clojure_core/clojure.core/into-array ) 包含在非向量序列上使用 into-array 的示例:

user=> (into-array (range 4))
#<Integer[] [Ljava.lang.Integer;@63d6dc46>

user=> (type (range 4))
clojure.lang.LazySeq

user=> (doc range)
-------------------------
clojure.core/range
([] [end] [start end] [start end step])
  Returns a lazy seq of nums from start (inclusive) to end
  (exclusive), by step, where start defaults to 0, step to 1, and end
  to infinity.

在列表上调用它也同样有效:
user=> (into-array (list 1 2 3))
#<Long[] [Ljava.lang.Long;@138297fe>

关于list - Clojure - 将列表转换为 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16647261/

相关文章:

我可以使用 union 来表达结构体和多个打包成员吗?

serialization - Clojure defrecord 序列化 ClassNotFoundException

java - 管理元编程(AOP/反射/宏)技术复杂性的实践

Clojure 项目值得一读吗?

c# - LINQ 获取 List<List<string>> 中的不同计数/排序

c# - 无法将 List<List<int>> 转换为返回类型 IList<IList<int>>

java - 置换/加扰java中的arraylist元素

java - 通过堆叠各种 block 来 build 最高的塔?

python - 如何对包含空格分隔数字的字符串列表进行排序?

Python 列表在 while 循环中填充和删除项目