[英]How to create a list of doubles out of an array of doubles
首先,我想說我知道之前曾在以下地點(其中包括)詢問過這個問題,但我的答案並沒有取得任何成功:
我想要做的是以下內容:
double[] FFTMagnitudeArray = processAudio.processFFT(audioData);
List<Double> FFTMagnitudeList = Arrays.asList(FFTMagnitudeArray);
audioData.setProperty("FFTMagnitudeList", FFTMagnitudeList);
但是,我收到錯誤:
"Type mismatch: cannot convert from List<double[]> to List<Double>"
這對我沒有意義,因為我認為List是必要的,而Array.asList(double [])將返回Double的列表,而不是double []。 我也試過以下,但無濟於事:
List<Double> FFTMagnitudeList = new ArrayList<Double>();
FFTMagnitudeList.addAll(Arrays.asList(FFTMagnitudeArray));
List<Double> FFTMagnitudeList = new ArrayList<Double>(Arrays.asList(FFTMagnitudeArray));
我一直得到同樣的錯誤。
那么我該如何創建List呢?
double
類型是基本類型而不是對象。 Arrays.asList
需要一個對象數組。 將double
元素數組傳遞給方法時,由於數組被視為對象,因此該方法會將參數作為double[]
對象類型的數組讀取。
您可以讓數組元素設置Double
包裝器類型。
Double[] FFTMagnitudeArray = processAudio.processFFT(audioData);
更改方法以返回對象包裝器數組類型。
Double[] FFTMagnitudeArray = processAudio.processFFT(audioData);
List<Double> FFTMagnitudeList = Arrays.asList(FFTMagnitudeArray);
或者您必須手動從基元復制到包裝類型(對於List)。
double[] FFTMagnitudeArray = processAudio.processFFT(audioData);
List<Double> FFTMagnitudeList = new ArrayList<>(FFTMagnitudeArray.length);
for (double val : FFTMagnitudeArray) {
FFTMagnitudeList.add(val);
}
使用Java 8:
List<Double> FFTMagnitudeList = Arrays.stream(FFTMagnitudeArray).mapToObj(Double::valueOf).collect(Collectors.toCollection(ArrayList::new));
這將從數組中創建DoubleStream
(基本類型double
的流),使用將每個double
轉換為Double
的映射(使用Double.valueOf()
),然后將生成的Double
流收集到ArrayList
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.