0

在选定的联系人中,我有重复的值,因此我首先复制选定的联系人副本

    for(int q=0;q<selectedcontact.size();q++)
    {
        selectedcontactcopy.add(selectedcontact.get(q));
    }

然后比较两个数组列表

    for(int r=0;r<selectedcontactcopy.size();r++)
        {
            for(int j=0;j<selectedcontact.size();j++)
            {
                if(r!=j && r<j)
                {

                    if(selectedcontactcopy.get(r).getLandLineNumber().toString().trim().equals(selectedcontact.get(j).getLandLineNumber().toString().trim()))
                    {
                    Log.i("hai",selectedcontact.get(j).getLandLineNumber().toString());
                    selectedcontact.remove(j);
                    j--;
                    }

                }
            }
        }

但是情况是避免了第一次重复然后arraylist不会比较下一个连续值

4

3 回答 3

1

这是进行唯一性检查的不好方法。更好的方法是利用以下功能java.util.Set- 确保您的联系人实现 Comparable 并比较固定电话号码,然后将它们添加到集合并迭代集合内容。

Set 保证您的唯一性,并提供比嵌套 for 循环更干净的接口。

于 2012-04-30T11:00:23.843 回答
1

用于HashSet避免来自 的重复值ArrayList

就像是,

ArrayList arrayList = new ArrayList(); // Your ArrayList which contains repeated values
HashSet hashSet = new HashSet();
hashSet.addAll(arrayList);
arrayList.clear();
arrayList.addAll(hashSet);

删除重复元素的最简单方法是将内容添加到 Set(不允许重复),然后将 Set 添加回 ArrayList。

于 2012-04-30T11:02:24.040 回答
0

无需为此创建 2 个列表。创建一个 HashMap,其中键作为固定电话号码,值作为整个联系人对象。

遍历列表'selectedContacts'并将所有元素放入哈希图中。最后,遍历创建的哈希映射并将哈希映射中的所有值存储到联系人列表中。

希望能帮助到你。

于 2012-04-30T11:18:50.137 回答