Il existe une méthode intéressante avec les flux qui permet de faire cela en une ligne de code et vous pouvez avoir deux listes qui ne sont pas du même type, ce qui n'est pas possible avec la méthode containsAll :
columnsOld.stream().filter(c -> columnsNew.contains(c)).collect(Collectors.toList());
Un exemple pour les listes de différents types. Si vous avez une relation entre foo et bar et que vous pouvez obtenir un objet bar à partir de foo, vous pouvez modifier votre flux :
List<foo> fooList = new ArrayList<>(Arrays.asList(new foo(), new foo()));
List<bar> barList = new ArrayList<>(Arrays.asList(new bar(), new bar()));
fooList.stream().filter(f -> barList.contains(f.getBar()).collect(Collectors.toList());
1 votes
@JohnnyCoder sérieusement ?
0 votes
@Ungeheuer cela ne fonctionne pas si vous voulez que les doublons ne soient inclus que s'ils sont dans les deux listes.