我正在获取联系人并添加到列表。列表中也包含重复的联系人,我必须在添加到列表时删除重复的联系人。
我在添加到列表时使用的是contains方法,但是即使列表中有相同的元素,contains方法也始终返回false。
if (!phoneContactVOList.contains(contactVO)) {
contactVO.ContactName = name
contactVO.ContactNumber = phoneNumber
phoneContactVOList.add(contactVO)
}
在上面的代码中,我试图仅在列表中添加唯一的联系人,但还会添加重复的联系人。
答案 0 :(得分:2)
您需要覆盖equals(...)
方法并编写自定义实现,如果name
和phoneNumber
相同,则返回true。
例如这样的
override fun equals(other: Any?): Boolean {
if(other == null || other !is ContactClassObject)
return false
return name == other.ContactName && phoneNumber==other.phoneNumber
}
答案 1 :(得分:-2)
如果您的数组列表中不包含此值,则您正在 contactVO 对象中设置值。 检查包含方法时, contactVO 的每个变量的值是什么? 你不能这样您需要检查每个arraylist项的一个特定变量,以决定是否添加。 循环浏览,然后检查电话号码是否不匹配,然后添加到列表中。 请遵循以下代码,
boolean insert = true;
for(int i = 0; i < phoneContactVOList.size(); i++){
if (phoneContactVOList.get(i).ContactNumber.equals(phoneNumber)){
insert = false;
break;
}
}
if (insert){
//set phoneContactVOList variable values
phoneContactVOList.add(contactVO);
}
##在开始循环之前,您需要将插入变量值设置为false