"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo contar eficientemente la frecuencia de palabras en una lista usando Java 8?

¿Cómo puedo contar eficientemente la frecuencia de palabras en una lista usando Java 8?

Publicado el 2024-11-08
Navegar:110

How can I efficiently count word frequency in a list using Java 8?

Contar la frecuencia de las palabras con Java 8

En el desarrollo web y el análisis de datos, comprender la frecuencia de las palabras es crucial. Para lograr esto, profundizaremos en cómo contar la frecuencia de las palabras en una lista usando Java 8.

Solución Java 8

La API Stream en Java 8 proporciona una solución elegante para Word conteo de frecuencia. Para comenzar, cree una lista de palabras:

List wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");

La lógica central implica agrupar las palabras por su identidad y contar las apariciones:

Map collect = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

Esto produce un mapa donde cada clave es una palabra única y el valor correspondiente es su frecuencia. La salida debería ser similar a:

{ciao=2, hello=1, bye=2}

Contando valores enteros

Si necesita valores enteros en lugar de valores largos, utilice:

Map collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));

Ordenar el mapa por valor

Para ordenar el mapa según los valores en orden descendente, use:

LinkedHashMap countByWordSorted = collect.entrySet()
            .stream()
            .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
            .collect(Collectors.toMap(
                    Map.Entry::getKey,
                    Map.Entry::getValue,
                    (v1, v2) -> {
                        throw new IllegalStateException();
                    },
                    LinkedHashMap::new
            ));

Este paso devuelve un LinkedHashMap ordenado donde las claves representan las palabras y los valores representan sus frecuencias ordenadas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3