streakode

Java 26

Ejercicios de Java sobre Colecciones

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

  1. 1 · Completa el hueco · nivel 1

    Completa para añadir un nombre a la lista y mostrar cuántos hay.

    List<String> names = new ArrayList<>();names.___("Pablo");System.out.println(names.___());
    • add
    • size
    • push
    • length
    Ver la respuesta

    Respuesta: add · size

    List<String> names = new ArrayList<>();names.add("Pablo");System.out.println(names.size());

    Las listas de Java añaden con add() y dicen cuántos elementos tienen con size(). length es de los arrays y de los String.

  2. 2 · Elige la respuesta · nivel 2

    ¿Qué ocurre al ejecutar la segunda línea?

    List<String> names = List.of("Ana", "Luis");names.add("Eva");
    • ALanza UnsupportedOperationException
    • BAñade "Eva" al final
    • CNo compila
    • DDevuelve false y no cambia la lista
    Ver la respuesta

    Respuesta: A. Lanza UnsupportedOperationException

    List.of() devuelve una lista inmutable. Compila porque add() existe en la interfaz List, pero falla en tiempo de ejecución.

  3. 3 · Elige la respuesta · nivel 2

    ¿Qué imprime este código?

    Set<String> tags = new HashSet<>(List.of("java", "kotlin"));System.out.println(tags.add("java") + " " + tags.size());
    • Afalse 2
    • Btrue 3
    • Ctrue 2
    • DLanza IllegalArgumentException
    Ver la respuesta

    Respuesta: A. false 2

    Un Set no admite duplicados: add() devuelve false si el elemento ya estaba y el tamaño no cambia.

  4. 4 · Elige la respuesta · nivel 2

    ¿Qué imprime este código?

    List<String> names = new ArrayList<>(List.of("Ana", "Luis", "Marta"));names.remove(0);System.out.println(names.get(0));
    • ALuis
    • BAna
    • CMarta
    • Dnull
    Ver la respuesta

    Respuesta: A. Luis

    remove(0) quita el primer elemento y los demás se desplazan una posición. Ahora Luis está en el índice 0.

  5. 5 · Encuentra el fallo · nivel 2

    Lanza ConcurrentModificationException. ¿Qué línea lo provoca?

    1List<Integer> numbers = new ArrayList<>(List.of(1, 2, 3, 4));2for (Integer n : numbers) {3    if (n % 2 == 0) {4        numbers.remove(n);5    }6}
    Ver la respuesta

    El fallo está en la línea 4: numbers.remove(n);

    No se puede modificar una lista mientras se recorre con for-each. La alternativa es numbers.removeIf(n -> n % 2 == 0).

  6. 6 · Encuentra el fallo · nivel 2

    Quiere quitar el id 10 de la lista, pero lanza IndexOutOfBoundsException. ¿Qué línea tiene el fallo?

    1List<Integer> ids = new ArrayList<>(List.of(10, 20, 30));2ids.remove(10);3System.out.println(ids);
    Ver la respuesta

    El fallo está en la línea 2: ids.remove(10); Se arregla con ids.remove(Integer.valueOf(10));.

    List tiene remove(int índice) y remove(Object elemento). Con un int literal se elige la versión por índice, y la posición 10 no existe. Integer.valueOf(10) fuerza la versión que busca el elemento.

Más temas de Java

Ver toda la ruta de Java