2016-01-05 3 views
1

Im ajoutant un POJO à une liste liée et maintenant je veux vérifier si la liste contient cet objet. Le code ci-dessous ne fonctionne pas, des suggestions?Comment tester si un certain objet est dans une liste

List<Object> data = new LinkedList<Object>(); 

FooBar obj = new FooBar(); 

data.add(obj); 

if (data.contains(FooBar.class)) { 
    // true 
} 
+0

Qu'est-ce que vous essayez de faire ici? Est-ce que vous essayez de voir si 'data' contient l'objet' obj', ou essayez-vous de dire s'il contient un objet de type 'FooBar'? – azurefrog

+0

si la liste contient un objet de type FooBar –

+1

Dans ce cas se référer à: http://stackoverflow.com/questions/6350158/check-arraylist-for-instance-of-object –

Répondre

1

Avez-vous essayé

if (data.contains(obj)) { 
    // true 
} 

?

La méthode contains() pour une liste ne renverra que true si, pour un élément de la liste, la valeur element.equals(parameter) est vraie.

EDIT: Si vous essayez de test est il y a une instance de FooBar dans votre liste et que vous utilisez Java 8, vous pouvez le faire:

if (strs.stream().anyMatch(e -> e instanceof FooBar)) { 
    // true 
} 
0

Premièrement, vous devez faire data.contains(obj) c'est-à-dire passer l'objet réel pour la comparaison.

ArrayList implements l'interface de liste. Si vous regardez le Javadoc for List à la méthode contains vous verrez qu'il utilise la méthode equals() pour évaluer si deux objets sont identiques.

Par conséquent, pour faire ce travail, vous devez remplacer equals méthode comme:

@Override 
public boolean equals(Object obj) { 
.. 
} 
+0

Et si je crée l'objet dans une autre classe, et ajoute l'objet à une liste dans cette classe. La classe parente recevra la liste et devra ensuite tester que l'objet est dans la liste. Comment pourrais-je tester cela? –

+0

@ Purpl3Paul Dans chaque scénario, vous aurez certainement l'objet de FooBar à utiliser pour la comparaison qui peut être utilisé. Comment allez-vous comparer sans objet? –

+0

Il s'agissait de vérifier si un objet spécifique est présent. Pour vérifier si un objet de la classe spécifiée est présent, reportez-vous à: http://stackoverflow.com/questions/6350158/check-arraylist-for-instance-of-object –