Vérifier si une ArrayList contient tous les éléments à partir d'une autre liste de tableaux (ou Collection)
Il y a probablement d'un simple one-liner que je suis juste de ne pas trouver ici, mais c'est ma question:
Comment puis-je vérifier si un ArrayList contient tous les objets dans un autre ArrayList? Je suis à la recherche (si elle existe) pour quelque chose le long des lignes de:
//INCORRECT EXAMPLE:
if(one.contains(two))
{
return true;
}
else
{
return false;
}
Par exemple:
ArrayList one = {1, 2, 3, 4, 5}
ArrayList two = {1, 2, 3} --> True
ArrayList two = {} --> True
ArrayList two = {1, 2, 3, 4, 5} --> True
ArrayList two = {1, 5, 2} --> True
ArrayList two = {1, 7, 4} --> False
ArrayList two = {0, 1, 3} --> False
ArrayList two = {4, 5, 6} --> False
ArrayList two = {7, 8, 9} --> False
- dans ce cas, vous voulez containsAll (déjà la réponse)
- Et vous pouvez réduire votre instruction if pour une ligne:
return one.containsAll(two);
- Connexes: meta.stackoverflow.com/q/382499/1889720
Vous devez vous connecter pour publier un commentaire.
Il existe une méthode appelée
containsAll
déclaré dans lejava.util.Collection
interface. Dans votre milieuone.containsAll(two)
donne la réponse souhaitée.Par la Liste de l'interface:
Prendre un coup d'oeil à
containsAll(Collection<?> c)
méthode deList
interface. Je pense que c'est ce que vous cherchez.Vous pouvez utiliser
containsAll
méthode de la liste pour faire le chèque. Cependant, c'est une opération linéaire. Si la liste est grande, vous devez le convertir enHashSet
d'abord, et ensuite effectuercontainsAll
:Si la longueur de
one
estN
et la longueur des deux estM
, cette solution a le temps de la complexité deO(M+N)
; la "plaine"containsAll
a la complexité deO(M*N)
, qui peut être nettement pire.Voici un autre exemple de l'utilisation de containsAll() que j'ai utilisé pour affirmer que deux ensembles sont égaux dans JUnit test:
Votre code dans l'exemple ne fait pas de sens, mais voici tout de même un exemple.
Il parcourt simplement tous
two
's éléments et des vérifications pour voir si elles sont dansone
.Puis le booléen
good
contient la valeur que vous souhaitez.Voir ArrayList#contient.
MODIFIER: oh wow, j'ai totalement oublié containsAll. Eh bien, c'est une autre façon de le faire si vous voulez vraiment comprendre.