From b47a1528e43721701afe835765442c2089aef314 Mon Sep 17 00:00:00 2001 From: Alexey Korban Date: Tue, 9 Jun 2020 19:06:05 +0500 Subject: [PATCH 1/2] Add my solution --- .../service/SimpleTextStatisticsAnalyzer.java | 31 ++++++++++++++----- .../StreamApiTextStatisticsAnalyzer.java | 27 +++++++++------- 2 files changed, 40 insertions(+), 18 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..fa727d3 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,11 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer { */ @Override public int countSumLengthOfWords(String text) { - return 0; + int sumLengthOfWords = 0; + for (String word : getWords(text)) { + sumLengthOfWords += word.length(); + } + return sumLengthOfWords; } /** @@ -34,7 +38,7 @@ public int countSumLengthOfWords(String text) { */ @Override public int countNumberOfWords(String text) { - return 0; + return getWords(text).size(); } /** @@ -44,7 +48,7 @@ public int countNumberOfWords(String text) { */ @Override public int countNumberOfUniqueWords(String text) { - return 0; + return getUniqueWords(text).size(); } /** @@ -57,7 +61,8 @@ public int countNumberOfUniqueWords(String text) { */ @Override public List getWords(String text) { - return emptyList(); + String[] words = text.split("\\W+"); + return Arrays.asList(words); } /** @@ -70,7 +75,7 @@ public List getWords(String text) { */ @Override public Set getUniqueWords(String text) { - return emptySet(); + return new HashSet<>(getWords(text)); } /** @@ -82,7 +87,11 @@ public Set getUniqueWords(String text) { */ @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + Map numberOfWordsRepetitions = new HashMap<>(); + for (String word : getWords(text)) { + numberOfWordsRepetitions.merge(word, 1, Integer::sum); + } + return numberOfWordsRepetitions; } /** @@ -95,6 +104,14 @@ public Map countNumberOfWordsRepetitions(String text) { */ @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + List words = getWords(text); + words.sort(getStringComparator(direction)); + return words; + } + + private Comparator getStringComparator(Direction direction) { + return direction.equals(Direction.ASC) ? + Comparator.comparing(String::length) : + Comparator.comparing(String::length).reversed(); } } 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..35b2666 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,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 java.util.stream.Stream; import static java.util.Collections.*; @@ -16,36 +15,42 @@ 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).stream().mapToInt(a -> 1).sum(); } @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 Stream.of(text.split("\\W+")).collect(Collectors.toList()); } @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(Collectors.toMap(word -> word, word -> 1, Integer::sum)); } @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + return getWords(text).stream().sorted(getStringComparator(direction)).collect(Collectors.toList()); + } + + private Comparator getStringComparator(Direction direction) { + return direction.equals(Direction.ASC) ? + Comparator.comparing(String::length) : + Comparator.comparing(String::length).reversed(); } } From 53dda83ac818566cd8b98035c7f9e8f23d0362c3 Mon Sep 17 00:00:00 2001 From: Alexey Korban Date: Wed, 10 Jun 2020 19:03:07 +0500 Subject: [PATCH 2/2] fix names --- .../izh/rd/online/service/SimpleTextStatisticsAnalyzer.java | 6 +++--- 1 file changed, 3 insertions(+), 3 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 fa727d3..7a12bc0 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 @@ -104,9 +104,9 @@ public Map countNumberOfWordsRepetitions(String text) { */ @Override public List sortWordsByLength(String text, Direction direction) { - List words = getWords(text); - words.sort(getStringComparator(direction)); - return words; + List sortedWords = getWords(text); + sortedWords.sort(getStringComparator(direction)); + return sortedWords; } private Comparator getStringComparator(Direction direction) {