名前と時間の属性を持つオブジェクトで満たされた 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 を使用することを考えていましたが、時間基準をどのように配置すればよいかわかりません。