在选定的联系人中,我有重复的值,以便我首先获取所选联系人副本的副本
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将不会比较下一个连续的值
答案 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中的所有值存储到联系人列表中。
希望它有所帮助。