Add WordFrequencyImpl

This commit is contained in:
2026-01-26 12:32:57 +03:00
parent 862ec9fd78
commit e7f1416a0f
2 changed files with 31 additions and 1 deletions

View File

@@ -9,7 +9,7 @@ import java.util.Map;
public class MainTest {
public static void main(String[] args) {
WordFrequency wordFrequency = null;
WordFrequency wordFrequency = new WordFrequencyImpl();
List<String> words1 = List.of("list", "map", "class", "public", "list", "set", "word", "class", "list", "public", "main", "string", "map");
List<String> words2 = List.of("long", "string", "list", "public", "import", "double", "word", "map", "class", "package", "void", "long");

View File

@@ -0,0 +1,30 @@
package ru.ilug.c10_word_frequency;
import lombok.extern.slf4j.Slf4j;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j
public class WordFrequencyImpl implements WordFrequency {
/**
* Ищет слова, которые встречаются в обоих списках, считает суммарную частоту каждого
* @param list1 Первый список слов
* @param list2 Второй список слов
* @return Частота слов, которые есть в обоих списках
*/
@Override
public Map<String, Integer> getWordFrequency(List<String> list1, List<String> list2) {
Set<String> retainedSet = new HashSet<>(list1);
retainedSet.retainAll(list2);
return Stream.concat(list1.stream(), list2.stream())
.filter(retainedSet::contains)
.collect(Collectors.groupingBy(w -> w, Collectors.collectingAndThen(
Collectors.toList(),
List::size
)));
}
}