Comment ArrayList contient méthode de travail?
J'ai un doute sur la façon ArrayList contient méthode fonctionne. Prenons un exemple:
List<String> lstStr = new ArrayList<String>();
String tempStr1 = new String("1");
String tempStr2 = new String("1");
lstStr.add(tempStr1);
if (lst.contains(tempStr2))
System.out.println("contains");
else
System.out.println("not contains");
il retourne "pas contient'.
Un autre exemple:
List<LinkProfileGeo> lst = new ArrayList<LinkProfileGeo>();
LinkProfileGeo temp1 = new LinkProfileGeo();
temp1.setGeoCode("1");
LinkProfileGeo temp2 = new LinkProfileGeo();
temp2.setGeoCode("1");
lst.add(temp1);
if (lst.contains(temp2))
System.out.println("contains");
else
System.out.println("not contains");
Il retourne contient. Alors, comment ne contient méthode fonctionne ?
Grâce
- Si vous fixez votre exemple pour appeler
lstStr.contains
, il ne fonctionne pas. (Il n'y a pas de variable appeléelst
.) Je vous suggère de supprimer cette question, et de le modifier ensuite le restaurer quand vous avez un réel courte mais complète du programme montrant le problème. - la deuxième partie est un doublon de: stackoverflow.com/questions/2642589/...
- double possible de Comment puis-je comparer les chaînes de caractères en Java?
Vous devez vous connecter pour publier un commentaire.
Que vous ajoutez à votre chaîne à la liste
lstStr
mais vous utilisez
contains
méthode surlst
Votre idée de test est correct, comme
contains
utilise en interneequals
pour trouver l'élément, de sorte que si la chaîne est appariés en utilisant des égaux, alors il doit retourner true. Mais il semble que vous êtes à l'aide de deux listes, l'une pour l'ajout et un autre pour la vérification contient.Ici est le code source de
ArrayList
si vous êtes intéressé. Comme @user2777005 noté, vous avez eu une faute de frappe dans votre code. Vous devez utiliserlstStr.contains()
, PASlst.contains()
.la deuxième partie est un doublon de: Comment fonctionne une liste de tableaux de la méthode contains() évaluer des objets?
Vous avez besoin de redéfinir la méthode equals pour le faire fonctionner comme vous le souhaitez.
dans la première section de code :
les deux
tempStr1
ettempStr2
reportez-vous deux-2 objet de la chaîne. après que la Chaîne de l'objet référencé par tempStr1 est ajouté à la Liste par lacodelstStr.add(tempStr1);
.donc, la Liste ont un seul objet de type String qui est dénotée partempStr1
pastempStr2
.maiscontains();
méthode de travail surequals()
méthode.c'estlstStr.contains(temp2);
retourne true si le contenu de l'objet String qui est référencé partemp2
est le même que celui du contenu de l'objet String qui est ajouté à laList
et renvoie la valeur false lorsque l'appariement n'a pas trouvé.icilstStr.contains(temp2);
retourner la valeur true parce que le contenu de l'objet String temp2 est égal au contenu de l'objet String temp1 qui est ajouté àList
.mais dans votre code insteed delstStr.contains(temp2);
il est mentionné que:Ici, vous êtes à l'aide de différents
List
variable de référence (lst
) au lieu de (lstStr
).c'est pourquoi elle retourne false et exécuté d'autre part.dans la 2e section de code
setGeoCode()
n'est pas défini.