it-swarm.com.de

ArrayList prüfen, ob bereits Daten vorhanden sind

Ich möchte nur überprüfen, ob Daten bereits in ArrayList vorhanden sind oder nicht, aber jedes Mal wird Folgendes angezeigt: Nicht vorhanden, wohingegen Daten in ArrayList vorhanden sind, und als Ergebnis werden doppelte Datensätze in einer Liste angezeigt. 

    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);
                }

             }

Problem:

Keine Toast-Nachricht erhalten, die ich verwende, um anzuzeigen, dass "Data Exists" oder "Not"

Endlich:

Ich möchte ein Element zu arraylist hinzufügen, falls es nicht bereits existiert, oder Toast zeigen soll, dass das Element bereits existiert.

6
Oreo

Sie vergleichen Ihr Listenobjekt DataArrayList.secondArraylist mit einer String.

if (DataArrayList.secondArraylist.equals(strName)) {

Das wird immer false zurückgeben. Erstellen Sie stattdessen eine Methode, die die Liste durchläuft und die strName mit dem Namen der in der Liste gespeicherten Second-Objekte vergleicht.

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

Dann benutze es

if (contains(DataArrayList.secondArraylist, strName)) {
    System.out.println("Data Exist(s)");
} else {
    System.out.println("Not Exist(s)");
}
17
pathfinderelite

Die contains-Methode ruft die equals-Methode mit der Signatur equals (Object) auf. Sie müssen diese Methode in Ihrer POJO-Klasse überschreiben.

Wenn du equals (Object) überschreibst, solltest du auch Hashcode () überschreiben

Code-Auszug : 

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

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

 @Override
 public int hashCode() {
      return getName().hashCode();
 }

Bearbeiten:

Außerdem wird für Object die Methode The contains verwendet. Ihr Zustand sollte also so aussehen: 

 (DataArrayList.secondArraylist.contains(actorList.get(position))) 

Endgültiger Code:  

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

Sie müssen indexOf() verwenden, während Sie einen Wert in ArrayList überprüfen

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

Da das strName, das Sie überprüfen, eine Eigenschaft Ihres Objekts Second ist, können Sie es nicht direkt mit der Methode des ArrayList prüfen. Der einfachste Weg wäre, die ArrayList DataArrayList.secondArraylist zu durchlaufen, jedes Second-Objekt in der Liste abzurufen und dann zu prüfen, ob strName der Eigenschaft Ihres Second-Objekts entspricht. 

Sie sind sich nicht sicher, wie Sie das Second-Objekt implementieren, aber Sie sollten den entsprechenden String von jedem Second-Objekt abrufen und dann mit dem strName-Objekt vergleichen.

0
Gisonrg