使用TreeSet把对象数组按某些字段自定义去重
// 模拟数据
List<LogBean> logList = new ArrayList<>();
logList.add(LogBean.builder().id(100).appType("抖音").desc("应用日志").createTm(LocalDate.parse("2021-12-12", DateTimeFormatter.ofPattern("yyyy-MM-dd"))).build());
logList.add(LogBean.builder().id(100).appType("抖音").desc("应用日志").createTm(LocalDate.parse("2021-12-11", DateTimeFormatter.ofPattern("yyyy-MM-dd"))).build());
logList.add(LogBean.builder().id(101).appType("快手").desc("应用日志").createTm(LocalDate.parse("2021-12-13", DateTimeFormatter.ofPattern("yyyy-MM-dd"))).build());
logList.add(LogBean.builder().id(102).appType("UC").desc("应用日志").createTm(LocalDate.parse("2021-12-14", DateTimeFormatter.ofPattern("yyyy-MM-dd"))).build());
logList.add(LogBean.builder().id(104).appType("QQ音乐").desc("应用日志").createTm(LocalDate.parse("2021-12-12", DateTimeFormatter.ofPattern("yyyy-MM-dd"))).build());
// 按照 应用类型和ID去重
TreeSet<LogBean> treeSet = new TreeSet<LogBean>((a,b)-> a.getId() == b.getId() && a.getAppType() == b.getAppType() ? 0 : 1 );
treeSet.addAll(logList);
// 去重后
System.out.println(" TreeSet: ");
System.out.println(JSON.toJSONString(new ArrayList<>(treeSet), true));
原始数据(未去重前):
[
{
"appType":"抖音",
"createTm":"2021-12-12",
"desc":"应用日志",
"id":100
},
{
"appType":"抖音",
"createTm":"2021-12-11",
"desc":"应用日志",
"id":100
},
{
"appType":"快手",
"createTm":"2021-12-13",
"desc":"应用日志",
"id":101
},
{
"appType":"UC",
"createTm":"2021-12-14",
"desc":"应用日志",
"id":102
},
{
"appType":"QQ音乐",
"createTm":"2021-12-12",
"desc":"应用日志",
"id":104
}
]
去重后的:
[
{
"appType":"抖音",
"createTm":"2021-12-12",
"desc":"应用日志",
"id":100
},
{
"appType":"快手",
"createTm":"2021-12-13",
"desc":"应用日志",
"id":101
},
{
"appType":"UC",
"createTm":"2021-12-14",
"desc":"应用日志",
"id":102
},
{
"appType":"QQ音乐",
"createTm":"2021-12-12",
"desc":"应用日志",
"id":104
}
]