From 4798bb34d3bf3019577881481fb75b94a9733705 Mon Sep 17 00:00:00 2001 From: Anastasiya Svetlova Date: Sun, 7 Nov 2021 06:07:27 +0400 Subject: [PATCH] finished work --- pom.xml | 2 +- .../service/SimpleTextStatisticsAnalyzer.java | 59 ++++++++++++++++--- .../StreamApiTextStatisticsAnalyzer.java | 49 +++++++++++---- 3 files changed, 92 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index 4a03703..a4511b8 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 1.8 - 5.5.2 + 5.8.1 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..6155530 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 listOfWords = getWords(text); + int count = 0; + for (int i = 0; i < listOfWords.size(); i++) { + + count += listOfWords.get(i).length(); + } + return count; } /** @@ -34,7 +41,8 @@ public int countSumLengthOfWords(String text) { */ @Override public int countNumberOfWords(String text) { - return 0; + + return getWords(text).size(); } /** @@ -44,7 +52,8 @@ public int countNumberOfWords(String text) { */ @Override public int countNumberOfUniqueWords(String text) { - return 0; + + return getUniqueWords(text).size(); } /** @@ -57,7 +66,13 @@ public int countNumberOfUniqueWords(String text) { */ @Override public List getWords(String text) { - return emptyList(); + + List completedList = new ArrayList<>(); + String[] wordsOfString = text.split("[\\s\",.?!-]+"); + for (int i = 0; i < wordsOfString.length; i++) { + completedList.add(wordsOfString[i]); + } + return completedList; } /** @@ -70,7 +85,15 @@ public List getWords(String text) { */ @Override public Set getUniqueWords(String text) { - return emptySet(); + + List listOfWords = getWords(text); + Set listOfUniqueWords = new HashSet<>(); + for (String a: listOfWords) { + if (!listOfUniqueWords.add(a)) { + listOfUniqueWords.add(a); + } + } + return listOfUniqueWords; } /** @@ -82,7 +105,16 @@ public Set getUniqueWords(String text) { */ @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + + Map countMap = new HashMap<>(); + for (String word : getWords(text)) { + if (countMap.containsKey(word)) { + countMap.put(word, countMap.get(word) + 1); + } else { + countMap.put(word, 1); + } + } + return countMap; } /** @@ -95,6 +127,19 @@ public Map countNumberOfWordsRepetitions(String text) { */ @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + + List sortedList = getWords(text); + + switch(direction) { + case ASC: + Collections.sort(sortedList, Comparator.comparing(String::length)); + break; + case DESC: + Collections.sort(sortedList, Comparator.comparing(String::length)); + Collections.reverse(sortedList); + break; + } + 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 e9b8957..51df1ba 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,10 @@ 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.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; import static java.util.Collections.*; @@ -16,36 +16,65 @@ public class StreamApiTextStatisticsAnalyzer implements TextStatisticsAnalyzer { @Override public int countSumLengthOfWords(String text) { - return 0; + + String[] wordsOfString = text.split("[\\s\",.?!-]+"); + int countSum = Arrays.stream(wordsOfString).mapToInt(String::length).sum(); + return countSum; } @Override public int countNumberOfWords(String text) { - return 0; + + return getWords(text).size(); } @Override public int countNumberOfUniqueWords(String text) { - return 0; + + return getUniqueWords(text).size(); } @Override public List getWords(String text) { - return emptyList(); + + String[] wordsOfString = text.split("[\\s\",.?!-]+"); + List completedList = Stream.of(wordsOfString).collect(Collectors.toList()); + return completedList; } @Override public Set getUniqueWords(String text) { - return emptySet(); + + String[] wordsOfString = text.split("[\\s\",.?!-]+"); + Set listOfUniqueWords = Stream.of(wordsOfString).collect(Collectors.toSet()); + return listOfUniqueWords; } @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + + String[] wordsOfString = text.split("[\\s\",.?!-]+"); + Map countMap = new HashMap<>(); + Arrays.stream(wordsOfString).forEach(e->countMap.put(e, countMap.getOrDefault(e, 0) + 1)); + return countMap; } @Override public List sortWordsByLength(String text, Direction direction) { + + String[] wordsOfString = text.split("[\\s\",.?!-]+"); + List sortedListASC = Stream.of(wordsOfString).collect(Collectors.toList()); + List sortedListDESC = Stream.of(wordsOfString).collect(Collectors.toList()); + + switch(direction) { + case ASC: + sortedListASC.sort(Comparator.comparing(String::length)); + return sortedListASC; + case DESC: + sortedListDESC.sort(Comparator.comparing(String::length)); + Collections.reverse(sortedListDESC); + return sortedListDESC; + } return emptyList(); } }