[英]Create new array of arrays from arrays of objects of array , with specific value
[英]Create generic array from type specific arrays in Clojure
我正在 clojure 中使用 JFreeChart,遇到了需要帮助的情况。
JFreeChart 的 DefaultXYDataset 有一个 addSeries 方法,用于向图表添加系列。 数据应该是一个包含两个特定类型数组(双精度数组)的数组。 因此,我编写了以下代码,认为它可以工作,但我得到了ClassCastException
class [Ljava.lang.Object; cannot be cast to class [[D ([Ljava.lang.Object; and [[D are in module java.base of loader 'bootstrap')
class [Ljava.lang.Object; cannot be cast to class [[D ([Ljava.lang.Object; and [[D are in module java.base of loader 'bootstrap')
。
(doto _dataset
(.addSeries "S1" (to-array (conj
[]
(double-array (range 10))
(double-array (range 10))))))
在查看之后我意识到to-array
将两个嵌套to-array
转换为#object["[Ljava.lang.Object;" 0x491223e7 "[Ljava.lang.Object;@491223e7"]
#object["[Ljava.lang.Object;" 0x491223e7 "[Ljava.lang.Object;@491223e7"]
而不是预期的#object["[D" 0x4f5cf37 "[D@4f5cf37"] #object["[D" 0x6d895193 "[D@6d895193"]
有没有办法将它们组合到通用数组而不将它们转换为 long 数组? 也许除了to-array
之外的另一种方法。 欢迎任何其他建议。 谢谢。
编辑:@bfabry 答案会起作用,我可以使用make-array
然后使用aset-double
但这将导致我遍历两个序列并将它们的值分配给主数组。 我试图避免这种情况,因为这两个数据集可能非常大,每个数据集甚至高达30 万个项目。
那是二维数组,而不是两个数组对象的数组。 您需要使用make-array
和aset-double
来制作您想要的数组。
user=> (class (make-array Double/TYPE 2 2))
[[D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.