我正在try 写一个方法,该方法接受一系列数值——例如List<Integer>List<Float>List<Double>等——并给出平均值.

public double getAverage(List<? extends Number> stats) {
    double sum = 0.00;
    if(!stats.isEmpty()) {
        // sum = stats.stream()
        //            .reduce(0, (a, b) -> a + b);
        // return sum / stats.size();
    }
}

以下是我遇到的错误:

Operator '+' cannot be applied to 'capture<? extends java.lang.Number>', 'capture<? extends java.lang.Number>'

推荐答案

试试这个:

public double getAverage(List<? extends Number> stats) {
    return stats.stream()
      .mapToDouble(Number::doubleValue)
      .summaryStatistics() // small overhead of unnecessary arithmetic
      .getAverage(); // returns 0 when empty
}

public double getAverage(List<? extends Number> stats) {
    return stats.stream()
      .mapToDouble(Number::doubleValue)
      .average()
      .或Else(0); // explicit value f或 empty (but no other value makes sense)
}

取决于你喜欢哪种风格.

Java相关问答推荐

Oracle DUAL表上使用DDL时jOOQ问题的解析'

如何使用Java API在Oracle ODI中运行模拟?

有没有一种方法使保持活动设置专用于java.net.http.HttpClient的一个实例

使用联接和分页的SpringBoot Spring数据JPA

如何使用Maven和Spring Boot将构建时初始化、跟踪类初始化正确传递到本机编译

按属性值从流中筛选出重复项

是否为计划任务补偿系统睡眠?

如何在EL处理器中定义带有命名空间的变量?

Android Studio模拟器没有互联网

如何在ImageIO或十二只猴子中旋转TIFF CMYK图像?

为什么创建Java动态代理需要接口参数

不能在 map 上移除折线

整数->;双取消框,但双->;int不';t开箱.为什么?

Java 21保护模式的穷尽性

在输入端没有可行的替代方案'; Select *';

双对象供应商

如何转换Vector<;对象>;转换为int?

Spring Boot应用程序中的自定义constraintvalidator不会被调用

在对象列表上调用提取后,如何判断没有值为空?

有没有办法仅将 JComboBox 中的选定项目居中(因此保持组合框中的所有项目左对齐)