我需要编写一个逻辑来检查一个列表是否有任何重复项,如果有,它会删除它们,并返回一个新的列表,其中包含没有重复/删除的项。下面是我尝试过但没有成功的方法。
CustomerResponse response = service.callGetDetails(id,name);
List <Customer> responseList = response.getCustomerList();
CustomerResponse response1 = service.callGetDetails(id,name);
responseList.addAll(response1.getCustomerList());
Customer.java:
public class Customer{
@JsonProperty("id")
private String id;
@JsonProperty("startDate")
private String id;
@JsonProperty("abcAccount")
private AbcAccount abcAccount;
@JsonProperty("accPaList")
private List<AccPaList> accPaList;
//Added getter and setter
@Override
public int hashCode(){
final int prime=31;
int result = 1;
result = prime * result + ((abcAccount ==null))? 0 : abcAccount.hashCode());
result = prime * result + ((accPaList ==null))? 0 : accPaList.hashCode());
result = prime * result + ((id ==null))? 0 : id.hashCode());
result = prime * result + ((startDate ==null))? 0 : startDate.hashCode());
return result;
}
@Override
public boolean equals(Object obj){
if(this == obj)
return true;
if(obj == null)
return false;
if(getClass() != obj.getClass())
return false;
Customer other = (Customer) obj;
if(abcAccount ==null){
if(other.abcAccount !=null)
return false;
} else if (!abcAccount.equals(other.abcAccount))
return false;
if(accPaList ==null){
if(other.accPaList !=null)
return false;
} else if (!accPaList.equals(other.accPaList))
return false;
if(id ==null){
if(other.id !=null)
return false;
} else if (!id.equals(other.id))
return false;
if(startDate ==null){
if(other.startDate !=null)
return false;
} else if (!startDate.equals(other.startDate))
return false;
return true;
}
}
以下是添加后的响应列表:
{
"customerList":[
{
"id":"123",
"startDate":"2022-01-29",
"abcAccount":{
"acct":"123",
"acctCurrency":"USD"
},
"accPaList":[
{
"headAcc":{
"act":"67890",
"acctCurrency":"USD"
},
"souAcc":{
"act":"5678",
"acctCurrency":"USD"
},
"accPaDetails":{
"id":"C012",
"version":"12"
},
"posting":"Direct"
}
],
"type":"EDA"
},
{
"id":"123",
"startDate":"2022-01-29",
"abcAccount":{
"acct":"123",
"acctCurrency":"USD"
},
"accPaList":[
{
"headAcc":{
"act":"67890",
"acctCurrency":"USD"
},
"souAcc":{
"act":"5678",
"acctCurrency":"USD"
},
"accPaDetails":{
"id":"C012",
"version":"12"
},
"posting":"Direct"
}
],
"type":"EDA"
},
{
"id":"456",
"startDate":"2022-01-29",
"abcAccount":{
"acct":"321",
"acctCurrency":"CAD"
},
"accPaList":[
{
"headAcc":{
"act":"76899",
"acctCurrency":"CAD"
},
"souAcc":{
"act":"8765",
"acctCurrency":"CAD"
},
"accPaDetails":{
"id":"C022",
"version":"15"
},
"posting":"Direct"
}
],
"type":"EDA"
}
]
}
在上面列出两个具有相同细节的对象的情况下,(即)["id": 123]是重复的。我在所有对象中添加了String(),equals(),hashcode(),并将其传递给hashSet
responseList= new ArrayList<>(new HashSet <Customer>(responseList));
但我得到了相同的对象后,传递到集,重复不被删除。
请帮忙。我在论坛上查看了它,尝试了很多案例,但都没有效果。
您是否也为AbcAccount
和AccPaList
类实现了equals()和hashcode()?
您关于通过Set传递它的想法是正确的,因为添加一个等于包含的对象之一的对象不会导致任何更改。所以罪魁祸首很可能是您实现的equals()
方法。请确保此方法为您定义为相等的对象返回true,否则返回false。如果写入正确,那么您的集合将过滤掉所有重复。实现toString()
方法是不必要的。
问题内容: 我有这样的桌子 我想执行一个查询,以除去所有最新的重复项。我希望你有个主意吗? 例如,查询后的表必须是这样的 问题答案: 语法可能需要调整,但是应该做到这一点。此外,您可能希望将子查询预查询到其自己的表FIRST中,然后对该结果集运行DELETE FROM。
请注意,在转向您之前,我已经浏览了各种帖子。事实上,我尝试实现中提供的解决方案:基于“notin”条件从数据帧中删除行 我的问题如下。让我们假设我有一个巨大的数据帧,我想删除重复的数据帧。我很清楚我可以使用drop_duplicates,因为这是最快的最简单的方法。然而,我们的老师希望我们创建一个包含重复项ID的列表,然后根据这些值是否包含在上述列表中删除它们。 现在,让我们看看输出: 因此,我得
问题内容: 我有一个表,该表由id(key),符号,方向,范围,价格,百分比列组成。我想删除符号,方向,价格和百分比相同且范围最小的数据。我将如何完成? 我一直在尝试改变这种说法:使某些东西起作用。 问题答案: 这是 aw 表的样本数据。根据您的描述,我认为您想丢弃值分别为2、3和5的行。 确定的每个组合的最小范围值,,,和。 qryMinRanges : …给出以下结果集: 确定这些最小范围中的
问题内容: 我有一个包含以下字段的表: 现在,我需要删除具有same的行。一种方法是使用以下SQL以及脚本( ): 运行此查询后,我可以使用服务器端脚本删除重复项。 但是,我想知道是否只能使用SQL查询来完成。 问题答案: 一种简单的方法是在3列上添加索引。在编写语句时,请包含关键字。像这样: 这将删除所有重复的行。作为一项额外的好处,重复的将来会出错。和往常一样,您可能需要在运行类似内容之前进行
问题内容: 我有一个自定义对象的ArrayList。我要删除重复的条目。 对象具有三个字段:和。如果字幕多次出现,那么我只需要带有thats字幕的第一项(忽略带有该字幕的其余对象)。 问题答案: 您可以使用自定义Comparator将ArrayList的内容放入TreeSet中,如果两个字幕相同,则应返回0。之后,您可以将Set转换为列表,并使列表中没有“重复项”。这是对象的示例,您当然应该使用正
问题内容: 数据库类型为PostGres 8.3。 如果我写了: 我有一些计数超过1的行。如何取出重复的行(我仍然希望每个行都保留1行,而不是+1行…我不想删除所有行。) 例子: 应该变成: 我找到的唯一答案是 在那里,但是我想知道是否可以在没有哈希列的情况下做到这一点。 警告 我没有具有唯一编号的PK,因此无法使用min(…)技术。PK是3个字段。 问题答案: 这是所有表都应具有主键的众多原因之