我的场景是这样的......我正在获取一个附加了一些重复对象的列表对象。所以我试图从列表中删除重复的对象,为此,我已经以传统的方式完成了。但这不能正常工作所以有没有更好的方法,请帮助
for (int i = 0; i < response.getPartyRec().get(0).getPersonInfo().getData().getContact().size(); i++)
{
if(response.getPartyRec().get(0).getPersonInfo().getData().getContact().get(i).isSetPostAddr())
response.getPartyRec().get(0).getPersonInfo().getData().getContact().remove(i);
}
这可以通过更有效的方式实现吗?
答案 0 :(得分:0)
您可以使用临时对象简化代码,而不是在for循环定义中链接5个调用。 要在循环列表时删除元素,可以使用迭代器(因为java 8的removeIf不是一个选项):
Data data = response.getPartyRec().get(0).getPersonInfo().getData();
ListIterator<Contact> iter = data.getContact().listIterator();
while(iter.hasNext()){
if(iter.next().isSetPostAddr()){
iter.remove();
}
}
我想我知道您的列表中有重复的对象,您的目标实际上是删除重复项。我对吗? isSetPostAddr()如何检查重复项?也许您只需要将列表转换为设置(即: HashSet )以避免重复?
此外,您应该考虑向getContact()
和getPartyRec
添加's',以显示它们代表集合/列表/多个对象......:getContacts()
和{{1 }}