我尝试删除重复的对象,当 _id 相同或电子邮件相同时重复
我的自定义比较:
@Override
public int compareTo(Lead other) {
// Compare by ID first
int idComparison = this._id.compareTo(other._id);
if (idComparison != 0) {
return idComparison;
}
int emailComparison = this.email.compareTo(other.email);
if (emailComparison != 0) {
return emailComparison;
}
// If IDs are the same, compare by date (latest first)
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date date1 = dateFormat.parse( this.entryDate);
Date date2 = dateFormat.parse( other.entryDate);
return date1.compareTo(date2);
} catch (ParseException e) {
return 0; // Handle parsing errors appropriately
}
我的声明和初始化
// convert the JSON data to a Java object
LeadsData leads = gson.fromJson(reader, LeadsData.class);
// Remove duplicates using TreeSet
TreeSet<Lead> uniqueRecords = new TreeSet<>(leads.leads);
我不知道我哪里做错了。我检查了 Treeset 文档,看起来很简单。
显然您要求消除重复的对象,其中“重复”的人具有相同的 ID 和相同的电子邮件。但随后您测试第三个字段,即日期时间字符串。因此,除非日期时间也相同,否则相同的 ID 和电子邮件不能被视为重复。
示例:
record Lead ( int id , String email , String when ) {}
Lead x = new Lead ( 1 , "[email protected]" , "2024-01-23T12:30:00" ) ;
Lead y = new Lead ( 1 , "[email protected]" , "2024-11-07T09:00:00" ) ;
根据您的规则,这些内容不会重复。日期时间文本不同,因此在您的三字段测试中,这两个对象不相等。