Maison >Java >javaDidacticiel >Comment puis-je comparer efficacement deux listes en Java et trouver des éléments communs et uniques ?

Comment puis-je comparer efficacement deux listes en Java et trouver des éléments communs et uniques ?

DDD
DDDoriginal
2024-11-28 14:17:11879parcourir

How Can I Efficiently Compare Two Lists in Java and Find Common and Unique Elements?

Comparaison de deux listes en Java

Vous souhaitez comparer deux ensembles de données pour déterminer le nombre d'éléments qu'ils partagent. En supposant qu'il ne s'agit pas d'objets Java List, envisagez l'approche suivante :

En utilisant ArrayList

En utilisant ArrayList, vous pouvez utiliser la méthode retentionAll. Cette méthode conserve uniquement les éléments de la première liste qui sont également présents dans la deuxième liste. Par exemple :

import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;

public class ListComparison {
    public static void main(String[] args) {
        Collection<String> listOne = new ArrayList<>(Arrays.asList("milan", "dingo", "elpha", "hafil", "meat", "iga", "neeta.peeta"));
        Collection<String> listTwo = new ArrayList<>(Arrays.asList("hafil", "iga", "binga", "mike", "dingo"));

        listOne.retainAll(listTwo);
        System.out.println(listOne);
    }
}

Ce code imprimera une liste des éléments communs entre listOne et listTwo.

Utilisation de HashSet

Si vous le souhaitez pour inclure les valeurs répétées (c'est-à-dire les éléments qui apparaissent plusieurs fois dans l'une ou l'autre liste), vous pouvez utiliser un HashSet au lieu d'ArrayList. HashSet n'autorise pas les doublons, donc après la comparaison, vous pouvez utiliser la méthode removeAll pour supprimer les éléments communs de l'ensemble combiné d'éléments dans les deux listes. Cela vous donnera une liste d'éléments uniques non communs :

import java.util.Collection;
import java.util.HashSet;
import java.util.Arrays;

public class ListComparison {
    public static void main(String[] args) {

        Collection<String> listOne = Arrays.asList("milan", "iga",
                "dingo", "iga",
                "elpha", "iga",
                "hafil", "iga",
                "meat", "iga",
                "neeta.peeta", "iga");

        Collection<String> listTwo = Arrays.asList("hafil",
                "iga",
                "binga",
                "mike",
                "dingo", "dingo", "dingo");

        Collection<String> similar = new HashSet<>(listOne);
        Collection<String> different = new HashSet<>();
        different.addAll(listOne);
        different.addAll(listTwo);

        similar.retainAll(listTwo);
        different.removeAll(similar);

        System.out.printf("One:%s%nTwo:%s%nSimilar:%s%nDifferent:%s%n", listOne, listTwo, similar, different);
    }
}

Ce code modifié affichera les éléments similaires et différents entre les deux listes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn