【发布时间】:2019-06-30 17:16:36
【问题描述】:
我正在编写一个程序,我必须在其中获取火车的平均延迟,但我遇到了麻烦,因为流必须返回一个 int(这意味着它将近似值)。我宁愿不使用沮丧。 以下是代码示例
public int getAvgDelay(){
return trainStop.stream()
.flatMapToInt(a->a.getDelays().stream())
.average().orElse(-1);
}
getDelays() 返回一个整数列表,其中包含该列车在单个车站的延误,我将其转换为流,然后平均值将返回双倍,但我想找到一种方法来获取 Int它。
总的来说,我在使用一些汇总收集器后必须返回单个值的大多数流中遇到问题,如果您能给我一个关于如何做到这一点的一般规则,我将不胜感激!
【问题讨论】:
-
为什么不能将结果转换为 int?当然你会失去准确性,但是当你有 double 并且你想要整数时会发生这种情况。
-
没有办法“从”
average函数中“获取 int”。您只需通过强制转换/截断或使用Math.round将其转换为int。 (请注意,round返回long,因此您仍然必须将其转换为int,这应该没问题,因为输入都是ints。) -
我的意思是我不想创建一个 double 然后将其转换为一个 int,如果可能的话,我宁愿用流一次做所有事情
-
@Paglie98 1) 这是不可能的; 2) 将 double 转换为 int 是微不足道的,无论是在语法上还是在运行时成本方面。
标签: java java-stream