Add WordFrequencyImpl
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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
|
||||
)));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user