Quick actions

cmd+k|ctrl+k

Navigation

Languages

java intersection of lists

Snippet info

Language

Java

Visibility

public

Author

yann

Created

2016-09-29T13:59:08Z

Updated

2016-09-29T14:06:03Z

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

class Main {
    public static void main(String[] args) {
        // Initialisation des 4 listes (16 élements, 3 répétés (2, 5, 10))
        final Collection<Long> premierePageMouvementsIds = new ArrayList(Arrays.asList( 1L, 3L,  5L, 7L));
        final Collection<Long> deuxiemePageMouvementsIds = new ArrayList(Arrays.asList( 2L, 4L,  6L, 8L));
        final Collection<Long> troisiemePageMouvementsIds = new ArrayList(Arrays.asList(2L, 9L,  10L, 11L));
        final Collection<Long> quatriemePageMouvementsIds = new ArrayList(Arrays.asList(5L, 10L, 15L, 20L));

        // Construction de la liste de tous les élements
        final List<Long> mouvementsIds = new ArrayList<>();
        mouvementsIds.addAll(premierePageMouvementsIds);
        mouvementsIds.addAll(deuxiemePageMouvementsIds);
        mouvementsIds.addAll(troisiemePageMouvementsIds);
        mouvementsIds.addAll(quatriemePageMouvementsIds);

        // Liste des élements différents
        // (un hashset ne peut contenir plusieurs fois le même élement)
        final Collection<Long> different = new HashSet<>();
        // Liste des élements similaires
        final Collection<Long> similar = new HashSet<>();
        
        // Construction des listes
        for (Long id : mouvementsIds) {
            if (different.contains(id)) {
                similar.add(id);
            } else {
                different.add(id);
            }
        }

        // Calcul du nombre d'élements total
        final long numberOfElements = premierePageMouvementsIds.size() +
                               deuxiemePageMouvementsIds.size() +
                               troisiemePageMouvementsIds.size() +
                               quatriemePageMouvementsIds.size();
        
        // Résultat
        System.out.println(numberOfElements + " total elements");
        System.out.println(similar.size() + " similar: " + similar);
        System.out.println(different.size() + " different");
        
        if (similar.size() + different.size() != numberOfElements) {
            System.out.println("");
            System.out.println(" > There is an error somewhere in the algorithm");
        }
    }
}
INFO