Java 8의 단어 빈도 계산: 간소화된 접근 방식
Java 8에서는 목록에 있는 단어의 빈도를 우아하게 계산할 수 있습니다. 스트림을 사용합니다.
다음 예제 목록을 고려해보세요. List
<code class="java">Map<String, Long> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));</code>
이 코드는 먼저 문자열 ID로 목록 요소를 그룹화하여 키가 고유한 단어이고 값이 다음과 같은 맵을 효과적으로 만듭니다. 그들의 수. Collectors.counting 수집기는 자동으로 각 단어의 개수를 늘립니다.
결과 맵인 wordFrequency는 인쇄 시 {ciao=2, hello=1, bye=2}와 유사합니다.
또는 다른 방법 , 정수 값 개수의 경우:
<code class="java">Map<String, Integer> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));</code>
이 변형은 Collectors.summingInt를 사용하여 정수 개수를 누적합니다.
결과 맵을 값별로 정렬하려면 추가 스트림과 수집기를 연결할 수 있습니다.
<code class="java">LinkedHashMap<String, Long> countByWordSorted = wordFrequencies.entrySet() .stream() .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) .collect(Collectors.toMap( Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> { throw new IllegalStateException(); }, LinkedHashMap::new ));</code>
이러한 정렬을 통해 가장 자주 발생하는 단어가 지도에서 첫 번째로 표시됩니다.
위 내용은 스트림을 사용하여 Java 8에서 단어 빈도를 효율적으로 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!