包含方法 returns 始终为 false?

Contains method returns always false?

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

我在添加到列表时使用 contains 方法,但 contains 方法总是 returns false 即使列表中有相同的元素。

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

    phoneContactVOList.add(contactVO)
}

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

您需要覆盖 equals(...) 方法并编写自定义实现,如果 namephoneNumber 相同,则 returns 为真。 例如像这样:

override fun equals(other: Any?): Boolean {
           if(other == null || other !is ContactClassObject)
               return false
           return name == other.ContactName && phoneNumber==other.phoneNumber
        }

如果您的数组列表不包含此内容,则您正在 contactVO 对象中设置值。 检查包含方法时 contactVO 的每个变量的值是多少? 你不能这样做。您需要为每个 arraylist 项目检查一个特定变量以做出决定,是否应该添加它。 遍历循环然后检查 phone 数字,如果不匹配则添加到列表中。 按照下面的代码,

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