Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList检查数据是否已存在_Java_Android_Arraylist - Fatal编程技术网

Java ArrayList检查数据是否已存在

Java ArrayList检查数据是否已存在,java,android,arraylist,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.secondAr

只想检查数据是否已经存在于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);
                }

             }
DataArrayList.secondArraylist.add(新的第二个(actorList.get(position).getName(),actorList.get(position).getImage());
System.out.println(DataArrayList.secondArraylist.size());
字符串strName=actorList.get(position.getName().toString();
Log.d(“名称:”,strName);

对于(int i=0;i,在检查ArrayList中的值时需要使用
indexOf()

if (DataArrayList.secondArraylist.indexOf(strName)!=-1) {
System.out.println("Data Exist(s)");
    } else {
System.out.println("Not Exist(s)");
}

您正在将列表对象
DataArrayList.secondArraylist
String

if (DataArrayList.secondArraylist.equals(strName)) {
这将始终返回
false
。相反,创建一个方法,在列表中循环,并对照存储在列表中的
第二个
对象的名称检查
strName

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

由于要检查的
strName
是对象的属性
Second
,因此不能使用
ArrayList
的方法直接检查它。最简单的方法是通过ArrayList
DataArrayList.secondArraylist
循环,获取列表中包含的每个
Second
对象,然后检查
str名称
等于第二个
对象的属性

不确定如何实现
Second
对象,但应该从每个
Second
对象中获取相应的字符串,然后将其与
strName
进行比较

contains方法调用签名为equals(Object)的equals方法,因此需要在POJO类中重写此方法

如果覆盖equals(Object),则还应覆盖hashcode()

代码段:

@Override
public String toString() {
    return getName();
}

 @Override
 public boolean equals(Object obj) {
     return !super.equals(obj);
 }

 @Override
 public int hashCode() {
      return getName().hashCode();
 }
编辑: 此外,contains方法用于对象。因此,您的条件应如下所示:

 (DataArrayList.secondArraylist.contains(actorList.get(position))) 
最终代码:

if (DataArrayList.secondArraylist.contains(actorList.get(position))) {
    System.out.println("Data Exist(s)");
} else {
    System.out.println("Not Exist(s)");
}

equals方法compare to object。您正在将列表对象与错误的列表项进行比较。您需要遍历列表以检查特定名称是否存在。条件中出错。打印
DataArrayList的值。secondArraylist
strName
您将发现错误。签出:ArrayList包含类型为的对象e
Second
,而不是
String
。这不起作用。看起来不错,但你能用其他方法给我看一下吗,可能是用更简单的方法。我的意思是这样的:for(int i=0;iSecond
对象的名称相等,那么它们是相等的。我不这么认为我认为这是一个安全的假设。这不是假设。这是他需要的。我们可以从
到字符串
返回值,我们要在其中比较两个对象
到字符串()
在图中出现了什么?它不用于比较。另外,为什么
!super.equals(obj)
?这将导致
equals
方法执行与其意图相反的操作。@pathfinderelite首先,了解contains方法的概念。您将得到所有答案:)
if (DataArrayList.secondArraylist.contains(actorList.get(position))) {
    System.out.println("Data Exist(s)");
} else {
    System.out.println("Not Exist(s)");
}