Pregunta Java: el orden de un HashSet

Piensa la respuesta antes de abrirla. Todas las opciones parecen razonables, y casi siempre hay un detalle que lo cambia todo.

Pregunta Java · Collections

¿Cuál es el resultado de ejecutar el siguiente código?

import java.util.HashSet;
import java.util.Set;

public class Test {
    static void imprime(Set<? extends String> set) {
        for (String elemento : set) {
            System.out.format("%s ", elemento);
        }
    }
    public static void main(String[] args) {
        Set<String> set = new HashSet<String>();
        set.add("A");
        set.add("J");
        set.add("A");
        set.add("X");
        imprime(set);
    }
}
  1. imprime "A J A X"
  2. imprime "A J X"
  3. La salida no puede ser determinada
Ver la respuesta

Respuesta: 3.

java TestA X J

Un HashSet no guarda duplicados, así que la segunda "A" se descarta y quedan tres elementos. Pero no garantiza ningún orden: los coloca según su hashCode, y en nuestra ejecución salió A X J, que no es el orden en que se añadieron ni el alfabético. La documentación ni siquiera garantiza que ese orden se mantenga a lo largo del tiempo.

Si necesitas que salgan en el orden en que se insertaron, usa LinkedHashSet; si los quieres ordenados, TreeSet.

Pregunta publicada en 2013 y revisada en octubre de 2026. La respuesta se comprobó compilando y ejecutando el código con Java 25 LTS en un contenedor limpio; las salidas están copiadas de esa ejecución.

3 comentarios en «Pregunta Java: el orden de un HashSet»

  1. Soy un desconocido…
    y se la respuesta…

    No te la dire…
    pero te dare una Pista…

    Todo lo que agregas en un HashSet, se va ordenando por medio de su hashcode…

    Atte. Desconocido2014MX

    Responder

Deja un comentario