Java8:列表中对象特定字段的值总和
假设有一个类ObjJava8:列表中对象特定字段的值总和,java,filter,java-8,java-stream,Java,Filter,Java 8,Java Stream,假设有一个类Obj class Obj{ int field; } 您有一个Obj实例列表,即list lst 现在,在Java8 with streams中,如何在过滤条件下(例如,对于对象o,条件是o.field>10)从列表lst中的对象中找到int字段field的值之和 int sum = lst.stream().filter(o -> o.field > 10).mapToInt(o -> o.field).sum(); 尝试: 你能行 int sum =
class Obj{
int field;
}
您有一个Obj
实例列表,即list lst
现在,在Java8 with streams中,如何在过滤条件下(例如,对于对象o
,条件是o.field>10
)从列表lst
中的对象中找到int字段field
的值之和
int sum = lst.stream().filter(o -> o.field > 10).mapToInt(o -> o.field).sum();
尝试:
你能行
int sum = lst.stream().filter(o -> o.getField() > 10).mapToInt(o -> o.getField()).sum();
或(使用方法参考)
你能行
int sum = lst.stream().filter(o -> o.getField() > 10).mapToInt(o -> o.getField()).sum();
或(使用方法参考)
你可以试试
int sum = list.stream().filter(o->o.field>10).mapToInt(o->o.field).sum();
如图所示您可以尝试
int sum = list.stream().filter(o->o.field>10).mapToInt(o->o.field).sum();
如图所示您还可以使用适当的求和采集器收集,如 返回生成整数值函数和的
收集器
应用于输入元素。如果不存在任何元素,则返回结果
是0
比如说
Stream<Obj> filtered = list.stream().filter(o -> o.field > 10);
int sum = filtered.collect(Collectors.summingInt(o -> o.field));
streamfiltered=list.Stream().filter(o->o.field>10);
int sum=filtered.collect(Collectors.summingit(o->o.field));
您还可以使用适当的求和收集器收集
,如
返回生成整数值函数和的收集器
应用于输入元素。如果不存在任何元素,则返回结果
是0
比如说
Stream<Obj> filtered = list.stream().filter(o -> o.field > 10);
int sum = filtered.collect(Collectors.summingInt(o -> o.field));
streamfiltered=list.Stream().filter(o->o.field>10);
int sum=filtered.collect(Collectors.summingit(o->o.field));
在Java 8中,对于具有字段和getField()方法的Obj
实体,您可以使用:
List<Obj> objs ...
Stream<Obj> notNullObjs =
objs.stream().filter(obj -> obj.getValue() != null);
Double sum = notNullObjs.mapToDouble(Obj::getField).sum();
列出对象。。。
流NOTNULOBJS=
objs.stream().filter(obj->obj.getValue()!=null);
Double sum=notNullObjs.mapToDouble(Obj::getField.sum();
在Java 8中,对于具有字段和getField()方法的Obj
实体,您可以使用:
List<Obj> objs ...
Stream<Obj> notNullObjs =
objs.stream().filter(obj -> obj.getValue() != null);
Double sum = notNullObjs.mapToDouble(Obj::getField).sum();
列出对象。。。
流NOTNULOBJS=
objs.stream().filter(obj->obj.getValue()!=null);
Double sum=notNullObjs.mapToDouble(Obj::getField.sum();
您可以使用以下方法:“IntSummaryStatistics”
可以使用以下方法:“IntSummaryStatistics”
或者intsum=lst.stream().mapToInt(Obj::getField).filter(n->n>10.sum()代码>或intsum=lst.stream().mapToInt(Obj::getField).filter(n->n>10.sum()代码>这个答案给主题增加了什么?在问题的任何地方都没有提到指标
,所有答案都已经非常具体。因此,除非你能编辑你的答案,为手头的主题添加一些有用的东西,否则我建议你删除它。更改名称以帮助Olivier的抽象思维。这个答案为主题添加了什么?在问题的任何地方都没有提到指标
,所有答案都已经非常具体。因此,除非你能编辑你的答案,为手头的主题添加一些有用的东西,否则我建议你删除它。更改名称以帮助奥利维尔的抽象思维。