我有一个名为FileDb的类,该类中的属性包含一个ParamAnalysis类型的对象的列表:

public class FileDb {
    private List<ParamAnalysis> paramsAnaylsis;


ParamAnalysis包含一堆类型为double的值:

public class ParamAnalysis {
    double max;
    double min;
    ...


我想获取paramsAnaylsis列表中的所有“最大值”。所以我在做:

public static double[] getMaxesFromDb(FileDb fileDb){
    return fileDb.getParamsAnaylsis().stream().map(paramAnalysis -> Double.valueOf(paramAnalysis.getMax())).toArray();
}


但我提出了错误:

Error:(35, 120) java: incompatible types: java.lang.Object[] cannot be converted to double[]


如何从此方法获得双打数组?

最佳答案

您应该使用mapToDouble接收DoubleStream并以toArray()结尾。收到异常的原因是,即使您转换为Double,它仍然是一个对象。

fileDb.getParamsAnaylsis()
      .stream()
      .mapToDouble(paramAnalysis -> paramAnalysis.getMax()) <-- creates a stream of primitive doubles
      .toArray();

07-25 22:22