【问题标题】:How to create a list of doubles out of an array of doubles如何从双打数组中创建双打列表
【发布时间】:2014-08-29 21:31:54
【问题描述】:

首先,我想说我知道以前曾在以下位置(以及其他位置)提出过这个问题,但我在那里的答案没有任何成功:

Create ArrayList from array

我想要做的是:

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));

而且我不断收到同样的错误。

那么如何创建列表呢?

【问题讨论】:

    标签: java arrays list double


    【解决方案1】:

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

    Double[] FFTMagnitudeArray = processAudio.processFFT(audioData);
    List<Double> FFTMagnitudeList = Arrays.asList(FFTMagnitudeArray);
    

    或者您必须手动从原始类型复制到包装器类型(对于列表)。

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

    【讨论】:

      【解决方案2】:

      double 类型是基本类型而不是对象。 Arrays.asList 需要一个对象数组。当您将 double 元素的数组传递给方法时,由于数组被视为对象,因此该方法会将参数读取为 double[] 对象类型的数组。

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

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

      【讨论】:

        【解决方案3】:

        使用 Java 8:

        List<Double> FFTMagnitudeList = Arrays.stream(FFTMagnitudeArray).mapToObj(Double::valueOf).collect(Collectors.toCollection(ArrayList::new));
        

        这会从数组中创建一个DoubleStream(基本类型double),使用将每个double 转换为Double(使用Double.valueOf())的映射,然后收集结果将Double 流转化为ArrayList

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-12-24
          • 2018-06-18
          • 2017-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-04
          相关资源
          最近更新 更多