Stavo giocando con lambda Java 8 per filtrare facilmente le raccolte. Ma non ho trovato un modo conciso per recuperare il risultato come un nuovo elenco all'interno della stessa istruzione. Ecco il mio approccio più conciso finora:
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);
Gli esempi in rete non hanno risposto alla mia domanda perché si fermano senza generare un nuovo elenco di risultati. Deve esserci un modo più conciso. Mi sarei aspettato, che la Stream
classe ha metodi come toList()
, toSet()
, ...
C'è un modo in cui le variabili targetLongList
possono essere assegnate direttamente dalla terza riga?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
seguito,Collection.removeIf(…)
per comodità.