Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Quitar duplicados de una lista y que el resultado quede en el mismo orden de la lista inicial...

En el ejercicio, según leí, el HashSet puede devolver en desorden el resultado (vs. la lista inicial), por lo cual quise que se mantubiera el orden en el que iban apareciendo en la lista inicial, en este caso usé LinkedHashSet ...

List<String> listaInicial = new ArrayList<>();
                listaInicial.add("IA Conference");
                listaInicial.add("AI Summit");
                listaInicial.add("DevFest");
                listaInicial.add("Cloud Expo");
                listaInicial.add("IA Conference");
                listaInicial.add("DevFest");

        System.out.println("Lista de Eventos: " + listaInicial);
        System.out.println("Total Eventos: " + listaInicial.size());

        //QUITAR DUPLICADOS
        Set<String> sinDuplicados = new LinkedHashSet<>(listaInicial);
        listaInicial = new ArrayList<>(sinDuplicados);

        System.out.println("Lista de eventos depurada: "+ listaInicial);
        System.out.println("Total eventos Lista Depurada: " + listaInicial.size());

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola Fabio, espero que estés bien

Has hecho un buen trabajo utilizando LinkedHashSet para eliminar duplicados mientras mantienes el orden de aparición de los elementos en la lista original. Sin embargo, parece que hay una discrepancia entre el orden esperado de salida y el que estás obteniendo.

El resultado esperado según el ejercicio es: [DevFest, AI Summit, Cloud Expo, IA Conference], pero tu salida es: [IA Conference, AI Summit, DevFest, Cloud Expo]. Esto indica que el orden esperado no es simplemente el orden de aparición, sino que parece ser diferente.

Para corregir esto, necesitarías ordenar la lista después de eliminar los duplicados. Si el orden esperado es específico y no sigue una regla clara, necesitarás más información sobre cómo se debe ordenar la lista.

Aquí tienes una manera de hacerlo si el orden específico fuera conocido:

List<String> listaInicial = new ArrayList<>();
listaInicial.add("IA Conference");
listaInicial.add("AI Summit");
listaInicial.add("DevFest");
listaInicial.add("Cloud Expo");
listaInicial.add("IA Conference");
listaInicial.add("DevFest");

Set<String> sinDuplicados = new LinkedHashSet<>(listaInicial);
listaInicial = new ArrayList<>(sinDuplicados);

// Ordenar la lista de acuerdo al orden esperado
List<String> ordenEsperado = Arrays.asList("DevFest", "AI Summit", "Cloud Expo", "IA Conference");
listaInicial.sort(Comparator.comparingInt(ordenEsperado::indexOf));

System.out.println("Lista de eventos depurada: " + listaInicial);
System.out.println("Total eventos Lista Depurada: " + listaInicial.size());

Si el orden esperado sigue una lógica específica, asegúrate de aplicarla correctamente en tu código. Espero que esto te ayude a resolver el problema. ¡Bons estudios!