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/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java
index 3f661d6..ee00f31 100644
--- a/src/main/java/com/epam/izh/rd/online/Main.java
+++ b/src/main/java/com/epam/izh/rd/online/Main.java
@@ -1,11 +1,8 @@
package com.epam.izh.rd.online;
-import java.io.IOException;
-import java.net.URISyntaxException;
-
public class Main {
- public static void main(String[] args) throws IOException, URISyntaxException {
+ public static void main(String[] args) {
}
}
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..0eaf6c4 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
@@ -4,7 +4,8 @@
import java.util.*;
-import static java.util.Collections.*;
+import static com.epam.izh.rd.online.helper.Direction.ASC;
+
/**
* Совет:
@@ -23,7 +24,8 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer {
*/
@Override
public int countSumLengthOfWords(String text) {
- return 0;
+ return text.replaceAll("[\\p{Punct}\\s]+",
+ "").length();
}
/**
@@ -34,7 +36,7 @@ public int countSumLengthOfWords(String text) {
*/
@Override
public int countNumberOfWords(String text) {
- return 0;
+ return getWords(text).size();
}
/**
@@ -44,7 +46,7 @@ public int countNumberOfWords(String text) {
*/
@Override
public int countNumberOfUniqueWords(String text) {
- return 0;
+ return new HashSet<>(getWords(text)).size();
}
/**
@@ -57,7 +59,7 @@ public int countNumberOfUniqueWords(String text) {
*/
@Override
public List getWords(String text) {
- return emptyList();
+ return new ArrayList<>(Arrays.asList(text.split("\\W+")));
}
/**
@@ -70,7 +72,7 @@ public List getWords(String text) {
*/
@Override
public Set getUniqueWords(String text) {
- return emptySet();
+ return new HashSet<>(getWords(text));
}
/**
@@ -82,7 +84,12 @@ public Set getUniqueWords(String text) {
*/
@Override
public Map countNumberOfWordsRepetitions(String text) {
- return emptyMap();
+ Map amountOfWordsRepetitions = new Hashtable<>();
+
+ for (String s : getUniqueWords(text)) {
+ amountOfWordsRepetitions.put(s, Collections.frequency(getWords(text), s));
+ }
+ return amountOfWordsRepetitions;
}
/**
@@ -95,6 +102,13 @@ public Map countNumberOfWordsRepetitions(String text) {
*/
@Override
public List sortWordsByLength(String text, Direction direction) {
- return emptyList();
+ List wordsByLength = getWords(text);
+ if (direction.equals(ASC)) {
+ wordsByLength.sort(((o1, o2) -> o1.length() - o2.length()));
+ } else {
+ wordsByLength.sort(((o1, o2) -> -(o1.length() - o2.length())));
+ }
+ return wordsByLength;
}
}
+
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..1146221 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,12 +2,11 @@
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 static java.util.Collections.*;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
/**
* Данный класс обязан использовать StreamApi из функционала Java 8. Функциональность должна быть идентична
@@ -16,36 +15,55 @@
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)
+ .size();
}
@Override
public int countNumberOfUniqueWords(String text) {
- return 0;
+ return new HashSet<>(getWords(text))
+ .size();
}
@Override
public List getWords(String text) {
- return emptyList();
+ Stream stream = Stream.of(text.split("\\W+"));
+ return stream
+ .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
+ .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();
}
}