删除ArrayList中的重复项时出错

时间:2014-03-04 18:56:58

标签: java android android-listview arraylist

我遇到了这段代码的问题 - 它不应该在遇到一些时添加重复的字符串。我不明白为什么会崩溃。

Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
NameIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
Temp = people.getString(NameIndex);
myArr.add(Temp.toString());

while (people.moveToNext()) {
    NameIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);    
    Name = people.getString(NameIndex);

    if((Name.toString()).equals(Temp)) {
    }
    else {
        myArr.add(Name.toString());
        Temp = Name.toString();
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用ArrayList的内置函数来检查String是否已存在。此外,如果列不存在,则getColumnIndex()返回-1,如果发生这种情况,则不能在getString()的下一行中使用它。您需要的修改很少:

  • 检查getColumnIndex()是否找到了您要查找的列
  • 使用ArrayList的内置方法检查String是否已存在

修改后的代码:

while (people.moveToNext()) {
    NameIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);

    //check if we have a valid column index
    if (NameIndex != -1) {
        Name = people.getString(NameIndex);

        if(myArr.contains(Name)) {
            // do nothing, as the same String is already in the list
        }
        else {
            myArr.add(Name.toString());
        }
    }    
}

注意:使用小写启动变量名是一种Java约定。