From 5c6b04b55388fa820c3033d5f64dabe2e345ea7c Mon Sep 17 00:00:00 2001 From: Albert-Fatkhudinov Date: Thu, 28 May 2020 13:44:57 +0300 Subject: [PATCH] final task --- .../service/SimpleTextStatisticsAnalyzer.java | 33 ++++++++++++----- .../StreamApiTextStatisticsAnalyzer.java | 35 ++++++++++++------- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleTextStatisticsAnalyzer.java b/src/main/java/com/epam/izh/rd/online/service/SimpleTextStatisticsAnalyzer.java index 32f8e35..506e5a3 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleTextStatisticsAnalyzer.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleTextStatisticsAnalyzer.java @@ -4,8 +4,6 @@ import java.util.*; -import static java.util.Collections.*; - /** * Совет: * Начните с реализации метода {@link SimpleTextStatisticsAnalyzer#getWords(String)}. @@ -23,7 +21,12 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer { */ @Override public int countSumLengthOfWords(String text) { - return 0; + List words = getWords(text); + int length = 0; + for (String word : words) { + length += word.length(); + } + return length; } /** @@ -34,7 +37,7 @@ public int countSumLengthOfWords(String text) { */ @Override public int countNumberOfWords(String text) { - return 0; + return getWords(text).size(); } /** @@ -44,7 +47,7 @@ public int countNumberOfWords(String text) { */ @Override public int countNumberOfUniqueWords(String text) { - return 0; + return new HashSet<>(getWords(text)).size(); } /** @@ -57,7 +60,7 @@ public int countNumberOfUniqueWords(String text) { */ @Override public List getWords(String text) { - return emptyList(); + return Arrays.asList(text.split("\\W+")); } /** @@ -70,7 +73,7 @@ public List getWords(String text) { */ @Override public Set getUniqueWords(String text) { - return emptySet(); + return new HashSet<>(getWords(text)); } /** @@ -82,7 +85,13 @@ public Set getUniqueWords(String text) { */ @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + Map mapCountWords = new HashMap<>(); + List listWords = getWords(text); + for (String word: listWords) { + mapCountWords.put(word, Collections.frequency(listWords, word)); + } + mapCountWords.forEach((k, v) -> System.out.println(k + ": " + v)); + return mapCountWords; } /** @@ -95,6 +104,12 @@ public Map countNumberOfWordsRepetitions(String text) { */ @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + List sortWords = getWords(text); + if (direction == Direction.DESC) { + sortWords.sort((o1, o2) -> o2.length() - o1.length()); + } else if (direction == Direction.ASC) { + sortWords.sort((o1, o2) -> o1.length() - o2.length()); + } + return sortWords; } } diff --git a/src/main/java/com/epam/izh/rd/online/service/StreamApiTextStatisticsAnalyzer.java b/src/main/java/com/epam/izh/rd/online/service/StreamApiTextStatisticsAnalyzer.java index e9b8957..ca783e4 100644 --- a/src/main/java/com/epam/izh/rd/online/service/StreamApiTextStatisticsAnalyzer.java +++ b/src/main/java/com/epam/izh/rd/online/service/StreamApiTextStatisticsAnalyzer.java @@ -2,12 +2,9 @@ import com.epam.izh.rd.online.helper.Direction; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; -import static java.util.Collections.*; /** * Данный класс обязан использовать StreamApi из функционала Java 8. Функциональность должна быть идентична @@ -16,36 +13,50 @@ public class StreamApiTextStatisticsAnalyzer implements TextStatisticsAnalyzer { @Override public int countSumLengthOfWords(String text) { - return 0; + return getWords(text).stream().mapToInt(String::length).sum(); } @Override public int countNumberOfWords(String text) { - return 0; + return (int) getWords(text).stream().count(); } @Override public int countNumberOfUniqueWords(String text) { - return 0; + return getWords(text).stream().collect(Collectors.toSet()).size(); } @Override public List getWords(String text) { - return emptyList(); + return Arrays.asList(text.split("\\W+")); } @Override public Set getUniqueWords(String text) { - return emptySet(); + return getWords(text).stream().collect(Collectors.toSet()); } @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + return getWords(text).stream() + .collect(HashMap::new, (k, v) -> { + if (k.containsKey(v)) { + k.put(v, k.get(v) + 1); + } else { + k.put(v, 1); + } + + }, HashMap::putAll); } @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + List sortWords = getWords(text); + if (direction == Direction.DESC) { + sortWords.sort((o1, o2) -> o2.length() - o1.length()); + } else if (direction == Direction.ASC) { + sortWords.sort((o1, o2) -> o1.length() - o2.length()); + } + return sortWords; } }