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();
}
}