У меня есть список объектов в Java с двумя timeStamp, например:
Obj (TimeStamp ts, TimeStamp generationTs, int value).
В конце я не хочудва пункта в списке с одинаковым тс.Если да, я хочу оставить только тот, у которого последнее поколение T.
На самом деле, у меня есть этот код, он работает, но я хотел бы знать, если с потоками я не могу что-то сделатьлучше ?
list.sort(Collections.reverseOrder());
List<Obj> returnedList = Lists.newArrayList();
if (!list.isEmpty()) {
returnedList.add(list.get(0));
Iterator<Obj> i = list.iterator();
while (i.hasNext()) {
Obj lastObj = returnedList.get(returnedList.size() - 1);
Obj nextObj = i.next();
if (!lastObj.getTs().isEqual(nextObj.getTs())) {
returnedList.add(nextObj);
} else {
if (lastObj.getGenerationTs().isBefore(nextObj.getGenerationTs())) {
returnedList.remove(lastObj);
returnedList.add(nextObj);
}
}
}
}
Если список:
{("2019-05-02T09:00:00Z", "2019-05-02T21:00:00Z", 1),
("2019-05-02T09:30:00Z", "2019-05-02T21:00:00Z", 2),
("2019-05-02T10:00:00Z", "2019-05-02T21:00:00Z", 3),
("2019-05-02T10:30:00Z", "2019-05-02T21:00:00Z", 4),
("2019-05-02T09:30:00Z", "2019-05-02T22:00:00Z", 5),
("2019-05-02T10:00:00Z", "2019-05-02T22:00:00Z", 6) }
Он должен вернуть:
{("2019-05-02T09:00:00Z", "2019-05-02T21:00:00Z", 1),
("2019-05-02T09:30:00Z", "2019-05-02T22:00:00Z", 5),
("2019-05-02T10:00:00Z", "2019-05-02T22:00:00Z", 6)
("2019-05-02T10:30:00Z", "2019-05-02T21:00:00Z", 4) }