ArrayList检查数据是否已存在

Ore*_*reo 7 java android arraylist

只想检查数据是否已存在于ArrayList中,但每次都得到:Not Exist(s)而数据存在于ArrayList中,因此我在列表中获得重复记录.

    DataArrayList.secondArraylist.add(new Second(actorList.get(position).getName(), actorList.get(position).getImage()));
             System.out.println(DataArrayList.secondArraylist.size());   

             String strName = actorList.get(position).getName().toString();
             Log.d("name:", strName);

             for(int i=0; i<DataArrayList.secondArraylist.size(); i++) 
             {

                 if(DataArrayList.secondArraylist.get(i).getName().equals(strName)) {
                     System.out.println(DataArrayList.secondArraylist.get(i).getName());

                     Toast.makeText(context, "Exist(s)", Toast.LENGTH_SHORT);
                }
                 else {

                     Toast.makeText(context, "Not Exist(s)", Toast.LENGTH_SHORT);
                }

             }
Run Code Online (Sandbox Code Playgroud)

问题:

没有得到任何Toast消息,我用它来表示"数据存在"或"不存在"

最后:

我想将项目添加到arraylist如果已经不存在,否则想要显示Toast该项目已经存在(s)

pat*_*ite 20

您正在将列表对象DataArrayList.secondArraylist与a 进行比较String

if (DataArrayList.secondArraylist.equals(strName)) {
Run Code Online (Sandbox Code Playgroud)

那将永远回归false.而是创建一个循环遍历列表的方法,并根据列表中存储strNameSecond对象的名称进行检查.

boolean contains(ArrayList<Second> list, String name) {
    for (Second item : list) {
        if (item.getName().equals(name)) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

然后使用它

if (contains(DataArrayList.secondArraylist, strName)) {
    System.out.println("Data Exist(s)");
} else {
    System.out.println("Not Exist(s)");
}
Run Code Online (Sandbox Code Playgroud)