![](/img/trans.png)
[英]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.