Je jouais avec des lambdas Java 8 pour filtrer facilement les collections. Mais je n'ai pas trouvé de moyen concis pour récupérer le résultat sous la forme d'une nouvelle liste dans la même déclaration. Voici mon approche la plus concise à ce jour:
List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = new ArrayList<>();
sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);
Les exemples sur le net n'ont pas répondu à ma question car ils s'arrêtent sans générer de nouvelle liste de résultats. Il doit y avoir un moyen plus concis. Je me serais attendu, que la Stream
classe a des méthodes comme toList()
, toSet()
...
Existe-t-il un moyen d' targetLongList
affecter directement les variables par la troisième ligne?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
suite, c'estCollection.removeIf(…)
pour plus de commodité.