Essayez de trouver toutes les occurrences d'un objet dans la liste de tableaux en java
J'ai une liste de tableaux en Java, et j'ai besoin de trouver toutes les occurrences d'un objet spécifique en elle.
La méthode ArrayList.indexOf(Object) trouve qu'il est un accident, de sorte qu'il semble que j'ai besoin de quelque chose d'autre.
- Par "objet spécifique" entendez-vous les références doivent être
equals
ou==
- Dans mon cas, c'est une liste de tableaux d'entiers, de sorte que les deux d'entre eux peuvent être utilisés. Mais en fait, sont là des cas, qu'un seul d'entre eux peut être utilisé?
- Toujours utiliser
equals
de comparer objet de contenu. SiInteger
, ou tout autres objets. - Merci pour les conseils 🙂 Pouvez-vous expliquer pourquoi c'est mieux?
==
opérateur compare uniquement la valeur dereference
, et non pas le contenu des objets. Ainsi, vous comparez les références à deux objets différents avec la même valeur, vous obtiendrez résultat faux avec==
et résultat vrai avecequals
méthode. Vous pouvez obtenir d'immenses ressources à ce sujet sur internet. juste google "est égal à v/s =="- Pas vraiment une réponse car je ne sais pas si vous pouvez utiliser Goyave, mais il est assez simple avec elle: Iterables.filtre(liste de Prédicats.equalTo(objet))
- Merci beaucoup soo, je n'avais pas comprendre cette différence 🙂
- "J'ai besoin de trouver tous les événements d'un objet spécifique en elle." il dit clairement ce qu'il veut!
- "équivaut à" peut voir le contenu de deux objets et de comparer les valeurs de ces objets. Si vous
==
alors qu'ils sont le même objet spécifique, ce ne sont pas deux objets qui contiennent les mêmes valeurs. Cela signifie que, bien quenew Integer(1234).equals(new Integer(1234))
c'est le cas quenew Integer(1234) != new Integer(1234)
qu'ils ne sont pas le même objet.
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous devez être de trop de fantaisie à ce sujet. La suivante devrait fonctionner:
Je suppose que vous avez besoin pour obtenir tous les indices de la liste de tableaux où l'objet sur cet emplacement est le même que l'objet donné.
La méthode suivante peut en faire ce que vous voulez faire:
Il recherche l'objet à l'aide de la
equals
méthode, et enregistre la position actuelle des index de tableau de la liste avec les indices. Vous faites allusion à l'indexOf
dans votre question, qui utilise leequals
méthode pour tester l'égalité, comme il est dit dans la documentation de Java:itérer sur tous les éléments, ne pas interrompre la boucle
chaque élément de la
ArrayList
comparer avec votreobject
(arrayList.get(i).equals(yourObject)
)si match que l'indice ( i ) doivent être stockés dans un ArrayList ( arraListMatchingIndexes).
Parfois de cette façon, je fais un "supprimer tout", quand j'en ai besoin les postes de trop.
J'espère que cela aide!
Ne
Espère que cette aide.
==
, si l'égalité objet signifie "contenir les mêmes données", puis c'est la.equals()
versionCeci est similaire à ce réponse, utilise juste
stream
plutôt l'API.