Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果没有值,Java流返回0_Java_Java Stream - Fatal编程技术网

如果没有值,Java流返回0

如果没有值,Java流返回0,java,java-stream,Java,Java Stream,对象结构 Account Money amount Float value; 实际上我得到的是这样的总数 double sum = accounts.stream() .filter(x -> x.getBalanceType().equals("120") || x.getBalanceType().equals("120+")) .collect(toList()).stream() .mapToDouble(y -

对象结构

Account
  Money amount
      Float value;
实际上我得到的是这样的总数

double sum = accounts.stream()
  .filter(x -> x.getBalanceType().equals("120") || x.getBalanceType().equals("120+"))
  .collect(toList()).stream()
  .mapToDouble(y -> y.getAmount().getValue()).sum();

如果没有值,则可以返回0如果没有值,则可以使用条件运算符,如果值不存在,则可以在条件运算符中返回0

您可以根据需要更改地图线

.mapToDouble(y -> y.getAmount().getValue() != null ? y.getAmount().getValue() : 0);

你为什么要收集然后再流媒体?如果列表为空,则流不会做任何事情

double sum = accounts.stream()
       .filter(x -> x.getBalanceType().equals("120") || x.getBalanceType().equals("120+"))
       .mapToDouble(y -> y.getAmount().getValue())
       .sum();

空列表将自动返回0

您可以使用.mapToDoubley->y.getAmount.getValue!=无效的y、 getAmount.getValue:0由“没有值”表示您的意思是值字段为空?为什么getValue不处理转换?返回Float而不是Float真的有什么意义吗?好奇:collecttoList.stream有什么意义?