streakode

Java 26

Ejercicios de Java sobre Streams

4 ejercicios de Streams en Java. Piensa la respuesta antes de abrirla: la explicación dice por qué las demás opciones fallan.

  1. 1 · Elige la respuesta · nivel 2

    ¿Qué imprime este código?

    Stream.of(1, 2, 3)    .peek(n -> System.out.print(n + " "))    .filter(n -> n > 1)    .findFirst();System.out.println();
    • A1 2
    • B1 2 3
    • C2
    • DNada: falta una operación terminal
    Ver la respuesta

    Respuesta: A. 1 2

    Los streams procesan los elementos de uno en uno y bajo demanda. findFirst() es terminal y se detiene en cuanto encuentra el 2, así que el 3 nunca pasa por peek().

  2. 2 · Completa el hueco · nivel 2

    Completa para obtener una lista con los nombres en mayúsculas.

    List<String> upper = names.stream()    .___(String::toUpperCase)    .___();
    • map
    • toList
    • filter
    • forEach
    • flatMap
    • sorted
    Ver la respuesta

    Respuesta: map · toList

    List<String> upper = names.stream()    .map(String::toUpperCase)    .toList();

    map() transforma cada elemento y toList(), disponible desde Java 16, recoge el resultado en una lista inmutable.

  3. 3 · Completa el hueco · nivel 2

    Completa para unir los elementos entre corchetes y separados por comas.

    String csv = Stream.of("a", "b", "c")    .collect(Collectors.___(", ", "[", "]"));System.out.println(csv);
    • joining
    • toList
    • concat
    • join
    • reducing
    • mapping
    Ver la respuesta

    Respuesta: joining

    String csv = Stream.of("a", "b", "c")    .collect(Collectors.joining(", ", "[", "]"));System.out.println(csv);

    Collectors.joining(separador, prefijo, sufijo) concatena los elementos de un stream de String. String.join solo acepta el separador y trabaja sobre colecciones, no dentro de collect.

  4. 4 · Ordena las líneas · nivel 2

    Ordena el pipeline para quitar repetidos, ordenar y pasar a mayúsculas, en ese orden.

    • .collect();
    • .distinct()
    • .map(String::toUpperCase)
    • .sorted()
    • .toList();
    • List<String> names = List.of("eva", "ana", "luis", "ana");
    • List<String> result = names.stream()
    • System.out.println(result);
    Ver la respuesta

    El orden correcto:

    List<String> names = List.of("eva", "ana", "luis", "ana");List<String> result = names.stream()    .distinct()    .sorted()    .map(String::toUpperCase)    .toList();System.out.println(result);

    Sobran: .collect();

    Un pipeline encadena operaciones intermedias (distinct, sorted, map) y acaba en una terminal (toList). collect() necesita un Collector como argumento.

Más temas de Java

Ver toda la ruta de Java