Os métodos auxiliares da resposta aceita não são necessários. Os fluxos podem ser usados com lambdas ou geralmente encurtados usando referências de método . Streams permitem operações funcionais. map()
converte os elementos e / collect(...)
ou toArray()
envolve o fluxo de volta em uma matriz ou coleção.
A palestra (vídeo) de Venkat Subramaniam explica isso melhor do que eu.
1 converter List<String>
paraList<Integer>
List<String> l1 = Arrays.asList("1", "2", "3");
List<Integer> r1 = l1.stream().map(Integer::parseInt).collect(Collectors.toList());
// the longer full lambda version:
List<Integer> r1 = l1.stream().map(s -> Integer.parseInt(s)).collect(Collectors.toList());
2 Converter List<String>
paraint[]
int[] r2 = l1.stream().mapToInt(Integer::parseInt).toArray();
3 Converter String[]
paraList<Integer>
String[] a1 = {"4", "5", "6"};
List<Integer> r3 = Stream.of(a1).map(Integer::parseInt).collect(Collectors.toList());
4 converter String[]
paraint[]
int[] r4 = Stream.of(a1).mapToInt(Integer::parseInt).toArray();
5 converter String[]
paraList<Double>
List<Double> r5 = Stream.of(a1).map(Double::parseDouble).collect(Collectors.toList());
6 (bônus) Converter int[]
paraString[]
int[] a2 = {7, 8, 9};
String[] r6 = Arrays.stream(a2).mapToObj(Integer::toString).toArray(String[]::new);
Muitas outras variações são possíveis, é claro.
Veja também a versão Ideone desses exemplos . Pode clicar em fork e, em seguida, executar para executar no navegador.
Lists.transform()
.