【发布时间】:2018-12-06 21:47:26
【问题描述】:
假设这些是 java bean 类-
class Camp {
int number;
User userId;
Date createDt;
}
class User {
private String id;
private String name;
}
我想从Camp 类型的arrayList 中删除那些具有相同userId 但较小createDt 的记录。
假设这是列表-
// ... the list is already populated
List<Camp> usersList = populatedListOfUser();
这就是方法-
private List<Camp> skipByComparison(List<Camp> usersList){
List<Camp> mainList = new ArrayList<Camp>();
Set<Camp> s = new TreeSet<Camp>(new Comparator<Camp>() {
@Override
public int compare(Camp o1, Camp o2) {
if(o1.getUserId().getId().equals(o2.getUserId().getId())) {
if(o1.getCreatedTs().compareTo(o2.getCreatedTs()) < 0) {
usersList.remove(o1);
return -1;
} else {
return 1;
}
} else {
return 0;
}
}
});
s.addAll(usersList);
mainList.addAll(s);
}
所以当我打电话时 -
usersList = skipByComparison(usersList);
我没有从 Camp 类型的 arrayList 中获取记录,这些记录具有相同的 userId 但较小的 createDt。
例如。如果我有 2 条记录具有相同的 Camp.getUser().getId(),但 record 1 的 CreateDt 大于 record 2,那么我想删除 record 2。
【问题讨论】:
-
这是什么
UserId userId;? yiu 的意思是User userID吗? -
@john- 是的。基本上我只想在 Camp.getUser().getId() 相同时删除那些没有最新 CreateDt 的记录。例如。如果我有 2 条具有相同 Camp.getUser().getId() 的记录,但记录 1 的 CreateDt 大于记录 2,那么我想删除记录 2。
-
skipByComparison()中没有return吗?
标签: java java-8 comparator