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..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
@@ -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();
}
/**
@@ -44,7 +51,7 @@ public int countNumberOfWords(String text) {
*/
@Override
public int countNumberOfUniqueWords(String text) {
- return 0;
+ return getUniqueWords(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;
}
/**
@@ -70,7 +84,7 @@ public List getWords(String text) {
*/
@Override
public Set getUniqueWords(String text) {
- return emptySet();
+ return new HashSet(getWords(text));
}
/**
@@ -82,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;
}
/**
@@ -95,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 e9b8957..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,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,48 @@
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
public int countNumberOfUniqueWords(String text) {
- return 0;
+ return (int) getUniqueWords(text).stream().count();
}
@Override
public List getWords(String text) {
- return emptyList();
+ return Stream.of(text.replaceAll("\\W", " ").split("\\s+"))
+ .collect(Collectors.toList());
}
@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.groupingBy(word -> word, Collectors.summingInt(word -> 1)));
}
@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());
}
}