Extracción primer caso insensible duplicado de un ArrayList

user9303958:

Tengo un ArrayList que contiene algunas cadenas:

ArrayList<String> strList = new ArrayList<String>();
strList.addAll(Arrays.asList("interface", "list", "Primitive", "class", "primitive", "List", "Interface", "lIst", "Primitive"));

He escrito un método para quitar el caso insensible cuerdas de la ArrayList:

public static ArrayList<String> removeDuplicates(ArrayList<String> strList) {

    for(int i = 0; i < strList.size(); i++) {
        for(int j = i + 1; j < strList.size(); j++) {
            if(strList.get(i).equalsIgnoreCase(strList.get(j))){
                strList.remove(j);
                j--;
            }
        }
    }
    return strList;   
}

ouput:

[interface, list, Primitive, class]

Sin embargo, estoy tratando de eliminar sólo la primera aparición de las cuerdas. Estoy tratando de hacer lo que mi salida sería igual a:

[Interface, lIst, Primitive, class]

¿Cuáles serían las últimas ocurrencias de los duplicados en el ArrayList

Lo que estoy tratando de hacer en concreto:

La versión de la cadena que permanece es la misma que la última ocurrencia. En otras palabras, la versión de los últimos estancias de ocurrencia en el lugar de la primera aparición

oleg.cherednik:

Creo que eliminan de la ArrayListque no es buena idea. Es mejor está utilizando Mappara crear nueva lista:

public static List<String> removeDuplicates(List<String> strList) {
    Map<String, String> map = new LinkedHashMap<>();
    strList.forEach(item -> map.put(item.toLowerCase(), item));
    return new ArrayList<>(map.values());
}

Entrada: [interface, list, Primitive, class, primitive, List, Interface, lIst, Primitive]

Salida: [Interface, lIst, Primitive, class]

PD

Lo mismo con una sola línea Stream, pero un poco no está tan claro:

public static List<String> removeDuplicates(List<String> strList) {
    return new ArrayList<>(strList.stream().collect(Collectors.toMap(String::toLowerCase, str -> str, (prev, next) -> next, LinkedHashMap::new)).values());
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=192591&siteId=1
Recomendado
Clasificación