包含方法返回的值始终为false?

时间:2019-06-19 12:24:30

标签: android kotlin collections contains

我正在获取联系人并添加到列表。列表中也包含重复的联系人,我必须在添加到列表时删除重复的联系人。

我在添加到列表时使用的是contains方法,但是即使列表中有相同的元素,contains方法也始终返回false。

if (!phoneContactVOList.contains(contactVO)) {
    contactVO.ContactName = name
    contactVO.ContactNumber = phoneNumber

    phoneContactVOList.add(contactVO)
}

在上面的代码中,我试图仅在列表中添加唯一的联系人,但还会添加重复的联系人。

2 个答案:

答案 0 :(得分:2)

您需要覆盖equals(...)方法并编写自定义实现,如果namephoneNumber相同,则返回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