У меня есть файл записей, каждая строка начинается с метки времени, а затем нескольких полей .. он реализует Iterable
@SuppressWarnings("unchecked")
@Override
public <E extends MarkedPoint>
Stream<E>
stream()
{
return (Stream<E>) StreamSupport.stream(spliterator(), false);
}
Я хотел бы реализовать с помощью API-интерфейса Lambda expression / streams API то, чего по сути нетпросто фильтр, но отображение / накопитель, который объединит соседние записи (элементы потока, поступающие из интерфейса Iterable), имеющие одинаковую временную метку.Мне нужен интерфейс, похожий на этот
MarkedPoint prevPoint = null;
void nextPoint(MarkedPoint in, Stream<MarkedPoint> inputStream, Stream<MarkedPoint> outputStream )
{
while ( prevPoint.time == in.time )
{
updatePrevPoint(in);
in = stream.next();
}
outputStream.emit(in);
prevPoint = in;
}
}
, который является грубым псевдокодом того, что, по моему мнению, близко к некоторому API, как к тому, как его предполагается использовать.самый простой способ реализации этого преобразования потока?Результирующий поток обязательно будет иметь то же или меньшее количество элементов, что и входные данные, поскольку он по сути является фильтром, и встречаются опции преобразования записей, происходящих с одной и той же отметкой времени.
Заранее спасибо