我在 Java 中有一个带有两个时间戳的对象列表,例如:
Obj(TimeStamp ts,TimeStamp generationTs,int 值)。
最后,我不希望列表中的两个项目具有相同的 ts。如果有的话,我只想保留最新一代 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) }
慕森王
森栏
HUX布斯
qq_遁去的一_1
相关分类