Java compare deux listes

L'interface de liste en Java fournit des méthodes pour pouvoir comparer deux listes et trouver les éléments communs et manquants dans les listes.



Comparez deux listes non triées pour l'égalité

Si vous voulez vérifier que deux listes sont égales, c'est-à-dire qu'elles contiennent les mêmes éléments et et apparaissent dans le même index, nous pouvons utiliser:

import java.util.Arrays; import java.util.List; public class CompareTwoLists {
public static void main(String[] args) {
List listOne = Arrays.asList('a', 'b', 'c');
List listTwo = Arrays.asList('a', 'b', 'c');
List listThree = Arrays.asList('c', 'a', 'b');

boolean isEqual = listOne.equals(listTwo);
System.out.println(isEqual);

isEqual = listOne.equals(listThree);
System.out.println(isEqual);
} }

Production:


true false

Comme vous pouvez le voir, le equals() compare les éléments et leur emplacement dans la liste.

En rapport:




Comparez deux listes triées

Deux listes contiennent-elles les mêmes éléments?

Pour comparer deux listes pour l'égalité uniquement en termes d'éléments indépendamment de leur emplacement, nous devons utiliser le sort() méthode de Collections() classer.

Par example:

import java.util.Arrays; import java.util.Collections; import java.util.List; public class CompareTwoLists {
public static void main(String[] args) {
List listOne = Arrays.asList('b', 'c', 'a');
List listTwo = Arrays.asList('a', 'c', 'b');
List listThree = Arrays.asList('c', 'a', 'b');

Collections.sort(listOne);
Collections.sort(listTwo);
Collections.sort(listThree);

boolean isEqual = listOne.equals(listTwo);
System.out.println(isEqual);

isEqual = listOne.equals(listThree);
System.out.println(isEqual);
} }

Production:


true true

Comparez deux listes, trouvez des différences

Le List L'interface fournit également des méthodes pour trouver les différences entre deux listes.

Le removeAll() La méthode compare deux listes et supprime tous les éléments communs. Il ne reste que les éléments supplémentaires ou manquants.

Par exemple, lorsque nous comparons deux listes, listOne et listTwo et nous voulons savoir quels éléments manquent dans listTwo nous utilisons:

import java.util.ArrayList; import java.util.Arrays; public class CompareTwoArrayLists {
public static void main(String[] args) {
ArrayList listOne = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));

ArrayList listTwo = new ArrayList(Arrays.asList(1, 2, 4, 5, 6, 7));

listOne.removeAll(listTwo);

System.out.println('Missing items from listTwo ' + listOne);
} }

Production:


Missing items from listTwo [3]

De même, si nous utilisons:

listTwo.removeAll(listOne); System.out.println('Missing items from listOne ' + listTwo);

Nous obtiendrions:

Missing items from listOne [6, 7]

Comparez deux listes, trouvez des éléments communs

Le retainAll() La méthode ne conserve que les éléments communs dans les deux listes. Par example:

public class CompareTwoArrayLists {
public static void main(String[] args) {
ArrayList listOne = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));

ArrayList listTwo = new ArrayList(Arrays.asList(1, 2, 4, 5, 6, 7));

listOne.retainAll(listTwo);

System.out.println('Common items in both lists ' + listOne);
} }

Production:


Common items in both lists [1, 2, 4, 5]