使用流添加持续时间的数组列表

我有一个秒表类来测量生成报告所需的时间:


public class Stopwatch {

  public String report;

  public Instant startTime;

  public Instant endTime;

  public Duration duration;

}

运行报告时,会收集时间和持续时间:


private ArrayList<Stopwatch> _reportStats;

最后我想知道所有报告的总持续时间,例如:


Duration total = Duration.ZERO; // was null;

for (Stopwatch s: _reportStats) {

  total = total.plus(s.duration);

}

除了我想使用流和减少,但我无法得到正确的语法:


Duration total = _reportStats.stream().reduce(... syntax ...);


慕田峪9158850
浏览 87回答 1
1回答

米琪卡哇伊

您可以将sumreduce与标识值 (Duration.ZERO&nbsp;) 一起使用,并将其定义Duration.plus为累加器:Duration&nbsp;total&nbsp;=&nbsp;_reportStats.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(Stopwatch::getDuration) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.reduce(Duration.ZERO,&nbsp;Duration::plus);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java