如何从双精度数组中创建双精度列表

Adr*_*ans 2 java arrays double list

首先,我想说我知道之前曾在以下地点(其中包括)询问过这个问题,但我的答案并没有取得任何成功:

从数组创建ArrayList

我想要做的是以下内容:

double[] FFTMagnitudeArray = processAudio.processFFT(audioData);


List<Double> FFTMagnitudeList = Arrays.asList(FFTMagnitudeArray);


audioData.setProperty("FFTMagnitudeList", FFTMagnitudeList);
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

"Type mismatch: cannot convert from List<double[]> to List<Double>"
Run Code Online (Sandbox Code Playgroud)

这对我来说没有意义,因为我认为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));
Run Code Online (Sandbox Code Playgroud)

我一直得到同样的错误.

那么我该如何创建List呢?

man*_*uti 5

double类型是原语类型,而不是一个对象.Arrays.asList期待一组对象.将double元素数组传递给方法时,由于数组被视为对象,因此该方法会将参数作为double[]对象类型的数组读取.

您可以让数组元素设置Double包装类型.

Double[] FFTMagnitudeArray = processAudio.processFFT(audioData);
Run Code Online (Sandbox Code Playgroud)


Ell*_*sch 5

更改方法以返回对象包装器数组类型.

Double[] FFTMagnitudeArray = processAudio.processFFT(audioData);
List<Double> FFTMagnitudeList = Arrays.asList(FFTMagnitudeArray);
Run Code Online (Sandbox Code Playgroud)

或者您必须手动从基元复制到包装类型(对于List).

double[] FFTMagnitudeArray = processAudio.processFFT(audioData);
List<Double> FFTMagnitudeList = new ArrayList<>(FFTMagnitudeArray.length);
for (double val : FFTMagnitudeArray) {
  FFTMagnitudeList.add(val);
}
Run Code Online (Sandbox Code Playgroud)