En lugar de reducir un flujo a un valor, también podemos recopilar los resultados. Podemos recopilar resultados en una matriz, un conjunto / lista o un mapa utilizando el método Stream.collect ().
1. Recopile los resultados de la transmisión en una matriz
List<String> list = new ArrayList<String>(); list.add("java"); list.add("php"); list.add("python"); Stream<String> wordStream = list.stream(); Stream<Integer> lengthStream = wordStream.map(s -> s.length()); Integer[] lenArr = lengthStream.toArray(Integer[]::new); System.out.println(Arrays.toString(lenArr)); |
* Tenga en cuenta que toArray () es una operación de terminal. Después de que se invoca toArray (), la secuencia ya no está disponible para su uso.
2. Recopile los resultados de la transmisión en una lista / conjunto
Recopile resultados para enumerarlos usando Collectors.toList()
.
List<Integer> intList= lengthStream.collect(Collectors.toList()); |
Recopile resultados para enumerarlos usando Collectors.toSet()
.
Set<Integer> intSet= lengthStream.collect(Collectors.toSet()); |
También podemos especificar el tipo de conjunto a usar así:
TreeSet<Integer> intSet= lengthStream.collect(Collectors.toCollection(TreeSet::new)); |
3. Recopile los resultados de la transmisión en el mapa
List<String> list = new ArrayList<String>(); list.add("java"); list.add("php"); list.add("python"); Stream<String> wordStream = list.stream(); // to map Map<String, Integer> map = wordStream.collect(Collectors.toMap(Function.identity(), s->s.length())); System.out.println(map); |
Producción:
{python=6, java=4, php=3}