Eu estava brincando com o Java 8 lambdas para filtrar facilmente as coleções. Mas não encontrei uma maneira concisa de recuperar o resultado como uma nova lista na mesma declaração. Aqui está a minha abordagem mais concisa até agora:
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);
Os exemplos na rede não responderam à minha pergunta porque eles param sem gerar uma nova lista de resultados. Deve haver uma maneira mais concisa. Eu teria esperado que a Stream
classe tem métodos como toList()
, toSet()
...
Existe alguma maneira de targetLongList
atribuir diretamente as variáveis pela terceira linha?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
depois,Collection.removeIf(…)
por conveniência.