当前位置: 首页 > 知识库问答 >
问题:

打印数组列表特定字段的平均值,但由另一个字段过滤

秦学林
2023-03-14

所以我有一辆普通车,有大小和长度变量。我已经创建了一个用于存储汽车对象的arraylist。我想使用java流使用lambda表达式按大小过滤列表,但只计算每个cars长度的平均值。所以在下面的代码中,我想得到尺寸大于10但小于30的汽车的平均长度。

我已经看到了其他关于如何平均整数数组列表等的帖子,但这是一个包含整数的对象列表,我无法获得任何输出,任何建议都非常感谢。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import java.util.List;


public class Car {
    
        int size;
        int length;
        
        public Car (int s, int l) {
            size = s;
            length = l;
        }
    
        public int getSize() {
            return size;
        }
        
        public int getLength() {
            return length;
        }
        
    
    public static void main(String[]args) {
        ArrayList<Car> list = new ArrayList<Car>();
        Car t1 = new Car(1,5);
        Car t2 = new Car(8,6);
        Car t3 = new Car(12,9);
        Car t4 = new Car(25,12);
        
        list.add(t1);
        list.add(t2);
        list.add(t3);
        list.add(t4);
    
        
         int info = list.stream()
        .filter(l -> l.getSize() > 10 && l.getSize() <30 )
        .average(Car.getLength);
        
            }

}

共有1个答案

翁心思
2023-03-14

此上下文中的".平均()"终端/聚合操作用于IntStream类。

因此,不要调用。平均(Car.get长度)(对于方法引用来说,这不是正确的语法,假设这就是您要做的),您需要这样的东西:

OptionalDouble average = list.stream()
.filter(l -> l.getSize() > 10 && l.getSize() < 30)
.mapToInt(Car::getLength)
.average();

int avg;

if (average.isPresent(){
   avg = (int) average.getAsDouble();
   System.out.println(avg);
}

那样的话,一旦开始。如果命中average()操作,则IntStream将正确命中该操作

如何处理平均值不存在的情况(例如,原始流列表为空)取决于您。我没有初始化avg变量,因为我假设您只需要在该条件下打印它,但是如果您以后需要它,您将需要实际初始化它。

https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html

使用平均运算的一些示例:https://www.geeksforgeeks.org/intstream-average-in-java-with-examples/

 类似资料:
  • 我使用Jaspersoft Studio 6.3.1.final来设计一个包含表格和其他元素的报告。 设计如下所示。该表只有列标题和详细信息部分。 现在垂直打印字段,如下所示: 但我需要的是像这样水平展示它们: 我在网上搜索,没有找到任何运气。 有办法做到这一点吗?我被困在这里了。非常感谢您的帮助! 编辑: 这就是我将数据传递到报表的方式(使用现有的Java服务生成JRBeanDig

  • 问题内容: 我得到了一个带有2列值的.txt文件。它们是2D坐标,因此第一列代表x值,第二列代表z值。不幸的是,有些行具有相同的x值但具有不同的z值。我想计算z值的平均值,以便将单个z与单个x关联。我所拥有的一个样本是: 如您所见,x值435.212与4个不同的z值相关联。我想拥有的是: 其中108.8985是(108.894 + 108.897 + 108.9 + 108.903)/ 4的结果。

  • 问题内容: 我想知道模式草案03是否可行。我已经在其他地方使用了依赖项,我认为可能需要创造性地使用它们,以便使用它们来指定某些字段的属性。 我目前的最佳尝试(无效)将使您对我的追求有所了解。我想要一个默认值,当另一个字段具有特定值时是可选值。 问题答案: 草案的第3版绝对可以做到这一点。由于您具有允许的国家/地区的完整列表,因此您可以执行以下操作: 因此,您实际上为架构定义了两种子类型,一种用于需

  • 我刚接触JasperReports,在解决一个问题时遇到了问题。 我有一份报告和一个字段,它是

  • 假设有一个类: ...您有一个实例列表,即