Adr*_*ans 2 java arrays double list
首先,我想说我知道之前曾在以下地点(其中包括)询问过这个问题,但我的答案并没有取得任何成功:
我想要做的是以下内容:
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呢?
的double类型是原语类型,而不是一个对象.Arrays.asList期待一组对象.将double元素数组传递给方法时,由于数组被视为对象,因此该方法会将参数作为double[]对象类型的数组读取.
您可以让数组元素设置Double包装类型.
Double[] FFTMagnitudeArray = processAudio.processFFT(audioData);
Run Code Online (Sandbox Code Playgroud)
更改方法以返回对象包装器数组类型.
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)