"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso contar com eficiência a frequência das palavras em uma lista usando Java 8?

Como posso contar com eficiência a frequência das palavras em uma lista usando Java 8?

Publicado em 2024-11-08
Navegar:171

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

Contando a frequência das palavras com Java 8

No desenvolvimento web e análise de dados, compreender a frequência das palavras é crucial. Para conseguir isso, nos aprofundaremos em como contar a frequência de palavras em uma lista usando Java 8.

Solução Java 8

A API Stream em Java 8 fornece uma solução elegante para palavras contagem de frequência. Para começar, crie uma lista de palavras:

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

A lógica central envolve agrupar as palavras por sua identidade e contar as ocorrências:

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

Isso produz um mapa onde cada chave é uma palavra única e o valor correspondente é sua frequência. A saída deve ser semelhante a:

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

Contando valores inteiros

Se você precisar de valores inteiros em vez de valores longos, use:

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

Classificando o mapa por valor

Para classificar o mapa com base nos valores em ordem decrescente, 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
            ));

Esta etapa retorna um LinkedHashMap classificado onde as chaves representam as palavras e os valores representam suas frequências classificadas.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3