From f9c42c3bed72bfae8ee2b3b2cecd386a849d8c6c Mon Sep 17 00:00:00 2001 From: Dmitrii Prikhozhaev Date: Thu, 16 Jan 2020 11:04:22 +0400 Subject: [PATCH 1/3] new commit --- java-collections.iml | 24 +++++++++++++++++++ .../service/SimpleTextStatisticsAnalyzer.java | 20 +++++++++++++--- .../StreamApiTextStatisticsAnalyzer.java | 12 +++++++--- 3 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 java-collections.iml diff --git a/java-collections.iml b/java-collections.iml new file mode 100644 index 0000000..dd43669 --- /dev/null +++ b/java-collections.iml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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..5157dfe 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,14 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer { */ @Override public int countSumLengthOfWords(String text) { - return 0; + List list = getWords(text); + int lengthAllWords = 0; + + for (String element : list) { + lengthAllWords += element.length(); + } + + return lengthAllWords; } /** @@ -34,7 +41,7 @@ public int countSumLengthOfWords(String text) { */ @Override public int countNumberOfWords(String text) { - return 0; + return getWords(text).size(); } /** @@ -57,7 +64,14 @@ public int countNumberOfUniqueWords(String text) { */ @Override public List getWords(String text) { - return emptyList(); + List wordList = new ArrayList<>(); + String[] words = text.replaceAll("\\W", " ").split("\\s+"); + + for (String word : words) { + wordList.addAll(Collections.singleton(word)); + } + + return wordList; } /** 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..5d73f91 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 @@ -6,6 +6,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; import static java.util.Collections.*; @@ -16,12 +18,15 @@ 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 @@ -31,7 +36,8 @@ public int countNumberOfUniqueWords(String text) { @Override public List getWords(String text) { - return emptyList(); + return Stream.of(text.replaceAll("\\W", " ").split("\\s+")) + .collect(Collectors.toList()); } @Override From 0285a4ff36d5fbe4cd0f02c4a5e047cc000b6762 Mon Sep 17 00:00:00 2001 From: Dmitrii Prikhozhaev Date: Thu, 16 Jan 2020 12:48:27 +0400 Subject: [PATCH 2/3] added some content --- .../online/service/SimpleTextStatisticsAnalyzer.java | 10 +++++++--- .../service/StreamApiTextStatisticsAnalyzer.java | 8 +++++--- 2 files changed, 12 insertions(+), 6 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 5157dfe..dd90978 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 @@ -51,7 +51,7 @@ public int countNumberOfWords(String text) { */ @Override public int countNumberOfUniqueWords(String text) { - return 0; + return getUniqueWords(text).size(); } /** @@ -84,7 +84,7 @@ public List getWords(String text) { */ @Override public Set getUniqueWords(String text) { - return emptySet(); + return new HashSet(getWords(text)); } /** @@ -96,7 +96,11 @@ public Set getUniqueWords(String text) { */ @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + Map map = new HashMap<>(); + for (String string : getWords(text)) { + map.put(string, Collections.frequency(getWords(text), string)); + } + return map; } /** 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 5d73f91..16625cd 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 @@ -31,7 +31,7 @@ public int countNumberOfWords(String text) { @Override public int countNumberOfUniqueWords(String text) { - return 0; + return (int) getUniqueWords(text).stream().count(); } @Override @@ -42,12 +42,14 @@ public List getWords(String text) { @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.groupingBy(word -> word, Collectors.summingInt(word -> 1))); } @Override From 657725bfd111edb0b588bc721a7da16364f3e929 Mon Sep 17 00:00:00 2001 From: Dmitrii Prikhozhaev Date: Thu, 16 Jan 2020 14:01:11 +0400 Subject: [PATCH 3/3] finished --- .../service/SimpleTextStatisticsAnalyzer.java | 8 +++++++- .../StreamApiTextStatisticsAnalyzer.java | 17 ++++++++++------- 2 files changed, 17 insertions(+), 8 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 dd90978..6ee81f2 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 @@ -113,6 +113,12 @@ public Map countNumberOfWordsRepetitions(String text) { */ @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + List sortedList = getWords(text); + if (direction.equals(Direction.ASC)){ + sortedList.sort(Comparator.comparing(String::length)); + } else { + sortedList.sort(Comparator.comparing(String::length).reversed()); + } + return sortedList; } } 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 16625cd..d241688 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,7 @@ 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; @@ -42,8 +39,7 @@ public List getWords(String text) { @Override public Set getUniqueWords(String text) { - return getWords(text).stream() - .collect(Collectors.toSet()); + return new HashSet<>(getWords(text)); } @Override @@ -54,6 +50,13 @@ public Map countNumberOfWordsRepetitions(String text) { @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + if (direction.equals(Direction.ASC)) { + return getWords(text).stream() + .sorted(Comparator.comparing(String::length)) + .collect(Collectors.toList()); + } + return getWords(text).stream() + .sorted(Comparator.comparing(String::length).reversed()) + .collect(Collectors.toList()); } }