【发布时间】:2017-04-18 09:40:18
【问题描述】:
我有一个包含大约 200,000 个刻度值(日期和值)的列表。该列表不对每个日期都有一个刻度值。但这是我在输出中需要的。所以我需要一些东西来在间隙中添加缺失的刻度值。
我正在使用 Java Stream API 来处理列表。
class Tick {
public LocalDate date;
public BigDecimal value;
public Tick(LocalDate date, BigDecimal value) {
this.date = date;
this.value = value;
}
}
public class DateInterpolator {
public static void main(String [] args)
{
final ArrayList<Tick> list = new ArrayList<>();
list.add(new Tick(LocalDate.of(2017, 1, 1), BigDecimal.valueOf(7)));
list.add(new Tick(LocalDate.of(2017, 1, 3), BigDecimal.valueOf(8)));
final Stream<Tick> stream = list.stream();
// TODO no value for 2017-01-02 given.
// I want to use the value from the day before (7).
// Add black magic here.
}
}
是否可以向流中添加值,或者我可以获得不包含间隙的结果流?我可以对流进行前瞻(以检测间隙)吗?
【问题讨论】:
-
据我了解,您不想将元素添加到流中(因为您不能,流中不包含任何数据),而是添加到您的列表中,是的,这绝对是可能,只需添加 1 天并检查该日期是否在列表中。
-
前一天的值为“7”。好的,我换个说法:我能得到一个不包含间隙的结果流吗?
标签: java java-stream