Obtenez de l'intersection de plusieurs Listes en utilisant retainAll en Java

Je vais avoir des problèmes pour obtenir l'intersection de plusieurs Listes sur Java. Ce que je fais, c'est ceci:
Je reçois (disons) 3 Listes de nombres entiers:

liste 1: [2, 2, 2, 2, 5, 5]

liste 2: [2, 2, 103]

liste 3: [2, 431]

Je suis en train d'utiliser retainAll à la première utilisation de chacun des autres listes:

list1.retainAll(list2);
list1.retainAll(list3);

Et j'obtiens ce résultat:

list1: [2, 2, 2, 2]

Mais je m'attends à obtenir un:

list1: [2]

...Puisque le seul élément toutes les listes d'action est un 2 et pas quatre 2.

Je sais que c'est probablement le comportement attendu de la retainAll fonction, mais j'ai besoin d'obtenir le résultat que j'ai mentionné ci-dessus.

De l'aide?

Edit:
À l'aide d'un HashSet pour interdire les doublons ne suffit pas non plus. Dans ce cas, par exemple:

liste 1: [2, 2, 2, 2, 5, 5]

liste 2: [2, 2, 103]

liste 3: [2, 2, 2, 431]

J'ai besoin pour obtenir un résultat de:

liste 1: [2, 2] (car toutes les listes ont au moins une paire de 2)

Au lieu de

liste 1: [2]

  • Vous avez d'abord besoin d'indiquer clairement ce que vous attendez. Voulez-vous conserver les valeurs qui sont les mêmes et au même indice dans les deux listes? Ou voulez-vous conserver les éléments qui sont présents dans les deux listes, et de ne garder que le même nombre que dans la deuxième liste? Ou quelque chose d'autre?
InformationsquelleAutor Multitut | 2013-02-08