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..1a53a4c 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 @@ -23,7 +23,7 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer { */ @Override public int countSumLengthOfWords(String text) { - return 0; + return text.replaceAll("\\W+", "").length(); } /** @@ -34,7 +34,7 @@ public int countSumLengthOfWords(String text) { */ @Override public int countNumberOfWords(String text) { - return 0; + return getWords(text).size(); } /** @@ -44,7 +44,8 @@ public int countNumberOfWords(String text) { */ @Override public int countNumberOfUniqueWords(String text) { - return 0; + Set stringSet = new HashSet<>(Arrays.asList(text.split("\\W+"))); + return stringSet.size(); } /** @@ -57,7 +58,7 @@ public int countNumberOfUniqueWords(String text) { */ @Override public List getWords(String text) { - return emptyList(); + return Arrays.asList(text.split("\\W+")); } /** @@ -70,7 +71,7 @@ public List getWords(String text) { */ @Override public Set getUniqueWords(String text) { - return emptySet(); + return new HashSet<>(getWords(text)); } /** @@ -82,7 +83,11 @@ public Set getUniqueWords(String text) { */ @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + Map countMap = new HashMap<>(); + for (String word : getWords(text)) { + countMap.merge(word, 1, Integer::sum); + } + return countMap; } /** @@ -95,6 +100,15 @@ public Map countNumberOfWordsRepetitions(String text) { */ @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + List list = getWords(text); + switch (direction) { + case ASC: + list.sort(Comparator.comparingInt(String::length)); + break; + case DESC: + list.sort(Comparator.comparingInt(String::length).reversed()); + break; + } + return list; } } 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..bcce335 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,10 +2,8 @@ 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.*; @@ -16,36 +14,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 getWords(text).size(); } @Override public int countNumberOfUniqueWords(String text) { - return 0; + + return new HashSet<>(getWords(text)).size(); } @Override public List getWords(String text) { - return emptyList(); + return Arrays.asList(text.split("\\W+")); } @Override public Set getUniqueWords(String text) { - return emptySet(); + return new HashSet<>(getWords(text)); } @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + return getWords(text) + .stream() + .collect(Collectors.toMap(word -> word, word -> 1, Integer::sum)); } @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + return getWords(text) + .stream() + .sorted(getCustomComparator(direction)) + .collect(Collectors.toList()); + } + + private Comparator getCustomComparator(Direction direction){ + return direction==Direction.ASC ? Comparator.comparing(String::length) + : Comparator.comparing(String::length).reversed(); } }