我如何获得对象数组的值的总和:java8

时间:2016-12-29 11:11:30

标签: java arrays object functional-programming java-stream

在变量“a”中我创建一个double数组,在“maxA”中我得到值的总和。现在在变量“b”中我创建一个具有double值的对象数组,现在我想使用stream值得到这些值的总和。谢谢你的帮助

  double[] a = new double[] {3.0,1.0};
  double maxA = Arrays.stream(a).sum();

  ObjectWithDoubleValue  o1 = new  ObjectWithDoubleValue (3.0);
  ObjectWithDoubleValue  o2 = new  ObjectWithDoubleValue (1.0);
  ObjectArray[] b = {o1 , o2};
  double maxB = ?;

1 个答案:

答案 0 :(得分:3)

使用mapToDouble将返回DoubleStream并使用您班级的getter函数从您的对象中获取值并最终应用sum

Arrays.stream(aa).mapToDouble(ObjectWithDoubleValue::getValue).sum()

其中getValue是您班级的getter函数

class ObjectWithDoubleValue{
    double a;
    public double getValue(){
        return a;
    }
}

示例

ObjectWithDoubleValue a1= new ObjectWithDoubleValue();
a1.a=3.0;

ObjectWithDoubleValue a2= new ObjectWithDoubleValue();
a2.a=3.0;
ObjectWithDoubleValue[] aa={a1,a2};
System.out.println(Arrays.stream(aa).mapToDouble(ObjectWithDoubleValue::getValue).sum());

输出:

6.0