> Java > java지도 시간 > 본문

Java 8을 사용하여 목록에서 단어 빈도를 효율적으로 계산하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-10-31 20:41:02
원래의
594명이 탐색했습니다.

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

Java 8로 단어 빈도 계산

웹 개발 및 데이터 분석에서는 단어 빈도를 이해하는 것이 중요합니다. 이를 달성하기 위해 Java 8을 사용하여 목록에서 단어의 빈도를 계산하는 방법을 살펴보겠습니다.

Java 8 솔루션

Java 8의 Stream API는 단어에 대한 우아한 솔루션을 제공합니다. 빈도 계산. 시작하려면 단어 목록을 만듭니다.

List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
로그인 후 복사

핵심 논리에는 단어를 ID별로 그룹화하고 발생 횟수를 계산하는 작업이 포함됩니다.

Map<String, Long> collect = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
로그인 후 복사

이렇게 하면 각 키가 있는 맵이 생성됩니다. 고유한 단어이며 해당 값은 빈도입니다. 출력은 다음과 유사해야 합니다.

{ciao=2, hello=1, bye=2}
로그인 후 복사

정수 값 계산

긴 값 대신 정수 값이 필요한 경우 다음을 사용하세요.

Map<String, Integer> collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));
로그인 후 복사

값으로 지도 정렬

값을 기준으로 지도를 내림차순으로 정렬하려면 다음을 사용하세요.

LinkedHashMap<String, Long> 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
            ));
로그인 후 복사

이 단계에서는 키가 단어를 나타내고 값이 나타내는 정렬된 LinkedHashMap이 반환됩니다. 주파수를 정렬했습니다.

위 내용은 Java 8을 사용하여 목록에서 단어 빈도를 효율적으로 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!