【发布时间】:2012-07-11 23:37:46
【问题描述】:
我有一个 ArrayList,其中包含属性名称和时间的对象。我想根据名称删除重复项并仅保留最新时间的记录。所以我在我的对象中覆盖了equals 和hashcode 的名称,并使用了这样的代码。
private List<ChangedRecentlyTO> groupRecords(List<ChangedRecentlyTO> toList) {
changedRecentlyList.clear(); //static list
for(ChangedRecentlyTO to : toList) {
if(!changedRecentlyList.contains(to)) {
changedRecentlyList.add(to);
} else {
if(changedRecentlyList.get(changedRecentlyList.lastIndexOf(to)).getTimeChanged().before(to.getTimeChanged())) {
changedRecentlyList.remove(to);
changedRecentlyList.add(to);
}
}
}
return changedRecentlyList;
}
但我想知道,有没有更好的解决方案?我正在考虑使用 Set,但我无法弄清楚我应该如何将时间标准放在那里。
【问题讨论】:
-
使用
name作为键将其放入地图中。编写一个“put”方法来检查时间是否大于已经存在的时间。 -
正如 radimpe 所说,您可能想要覆盖容器的 add/put 方法。但如果你只在这里使用它,我不确定它是否值得改变
-
这只是一个地方的解决方案,所以我不认为为此创建新课程是值得的。
标签: java list collections unique