for循环中的循环问题,同时避免重复条目

时间:2012-04-30 10:57:05

标签: java android for-loop

在选定的联系人中,我有重复的值,以便我首先获取所选联系人副本的副本

    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将不会比较下一个连续的值

3 个答案:

答案 0 :(得分:1)

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

Set保证您的唯一性,并提供比嵌套for循环更清晰的界面。

答案 1 :(得分: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。

答案 2 :(得分:0)

无需为此创建2个列表。 使用键作为固定电话号码和值作为整个联系对象创建一个HashMap。

遍历列表'selectedContacts'并将所有元素放入hashmap中。 最后,迭代创建的hashmap并将hashmap中的所有值存储到联系人列表中。

希望它有所帮助。