¿Cómo encontrar filas duplicadas y mostrar el número de repeticiones frente a ellos

que adam:

Sí, una pregunta trivial, pero no encontró un duplicado. Por el momento, a partir de esta colección (ArrayList):

Java
C#
Java
Python

Debo sale esto: (es decir, sobre cada palabra será el número de duplicados encontrados)

Java 2
C# 1
Java 2
Python 1

Por el momento estoy usando mapa, pero elimina los duplicados y eso es lo que me pasa.

Java 2
C# 1
Python 1

Aquí está mi código:

      Map<String, Integer> map = new HashMap<>();
        for (String temp : array) {
            Integer count = map.get(temp);
            if (count != null){
                map.put(temp, count + 1);
            }
            else {
                map.put(temp, 1);
            }
        }

Tenía una idea para escribir datos a otra lista, que pasar por esta lista comparando cada elemento de la lista de "padre" con todos los elementos de la nueva lista. Algo como eso:

List<String> resultList = new ArrayList<>();
List<String> mainList = new ArrayList<>();

    for (int i = 0; i < arrayList.size(); i++) {
        mainList.add(i,arrayList.get(i));
    }

    for (int i = 0; i < mainList.size(); i++) {
            int x = 1;
        for (String anArray : arrayList) {
            if (mainList.get(i).equals(anArray)) {
                resultList.add(i,mainList.get(i) + " "+ x++);
            }
        }
    }
    resultList.forEach(System.out::println);

Que funciona como que necesito, sino que también crea una línea adicional cuando encuentra un duplicado.

Java 2
C# 1
Java 2
Python 1
Java 1
Java 1

En la puesta en práctica con la lista, tengo el problema de que aumenta el elemento actual por 1, sino que también crea otro al mismo tiempo.

Chicos, voy a ser feliz con cualquier idea o pista que me guiará a la solución de mi problema!

UPD: Todas las respuestas a esta pregunta son divinos. ¡Gracias chicos! Me siento raro tratando de elegir la respuesta correcta sin ofender a los demás.

Juan Carlos Mendoza :

Se puede utilizar Collections.frequencyal iterar la lista para imprimir el número de ocurrencias de cada palabra de la lista:

public static void main(String[] args) {
    List<String> list = Arrays.asList("Java", "C#", "Java", "Python");
    list.forEach( s -> System.out.println(s + " " + Collections.frequency(list, s)));
}

Salida:

Java 2
C# 1
Java 2
Python 1

Supongo que te gusta

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