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..59817b2 100644
--- a/src/main/java/com/epam/izh/rd/online/Main.java
+++ b/src/main/java/com/epam/izh/rd/online/Main.java
@@ -6,6 +6,5 @@
public class Main {
public static void main(String[] args) throws IOException, URISyntaxException {
-
}
}
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..27deb3d 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
@@ -1,11 +1,8 @@
package com.epam.izh.rd.online.service;
import com.epam.izh.rd.online.helper.Direction;
-
import java.util.*;
-import static java.util.Collections.*;
-
/**
* Совет:
* Начните с реализации метода {@link SimpleTextStatisticsAnalyzer#getWords(String)}.
@@ -23,7 +20,12 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer {
*/
@Override
public int countSumLengthOfWords(String text) {
- return 0;
+ String[] splitWords = text.split("\\s*\\W\\s*");
+ int count = 0;
+ for (String tempWord : splitWords) {
+ count += tempWord.length();
+ }
+ return count;
}
/**
@@ -34,7 +36,7 @@ public int countSumLengthOfWords(String text) {
*/
@Override
public int countNumberOfWords(String text) {
- return 0;
+ return getWords(text).size();
}
/**
@@ -44,20 +46,28 @@ public int countNumberOfWords(String text) {
*/
@Override
public int countNumberOfUniqueWords(String text) {
- return 0;
+ return new HashSet<>(getWords(text)).size();
}
/**
- * Необходимо реализовать функционал получения списка слов из текста.
- * Пробелы, запятые, точки, кавычки и другие знаки препинания являются разделителями слов.
+ * Необходимо реализовать функционал получения списка слов из текста..
+ * Пробелы, запятые, точки, кавычки и другие знаки препинания являются разделителями слов............3
* Например для текста "One, two, three, three - one, tWo, tWo!!" должен вернуться список :
* {"One", "two", "three", "three", "one", "tWo", "tWo"}
- *
+ *...........................
* @param text текст
*/
@Override
public List getWords(String text) {
- return emptyList();
+ String[] splitWords = text.split("\\s*\\W\\s*");
+
+ List wordsList = new ArrayList<>();
+ for (String splitWord : splitWords) {
+ if (!splitWord.equals("")) {
+ wordsList.add(splitWord);
+ }
+ }
+ return wordsList;
}
/**
@@ -70,7 +80,7 @@ public List getWords(String text) {
*/
@Override
public Set getUniqueWords(String text) {
- return emptySet();
+ return new HashSet<>(getWords(text));
}
/**
@@ -82,7 +92,20 @@ public Set getUniqueWords(String text) {
*/
@Override
public Map countNumberOfWordsRepetitions(String text) {
- return emptyMap();
+ return getMapWithNumberOfWordsRepetitions(getWords(text));
+ }
+
+ private Map getMapWithNumberOfWordsRepetitions(List splitWords) {
+ Map map = new HashMap<>();
+ for (String splitWord : splitWords) {
+ if (map.containsKey(splitWord)) {
+ int count = map.get(splitWord);
+ map.put(splitWord, ++count);
+ } else {
+ map.put(splitWord, 1);
+ }
+ }
+ return map;
}
/**
@@ -95,6 +118,15 @@ public Map countNumberOfWordsRepetitions(String text) {
*/
@Override
public List sortWordsByLength(String text, Direction direction) {
- return emptyList();
+ return getListWithSortAsDirection(getWords(text), direction);
+ }
+
+ private List getListWithSortAsDirection(List wordsList, Direction direction) {
+ if (direction.name().equals("ASC")) {
+ wordsList.sort(Comparator.comparing(String::length));
+ } else {
+ wordsList.sort(Comparator.comparing(String::length).reversed());
+ }
+ return wordsList;
}
}
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..39ea7fe 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
@@ -1,13 +1,8 @@
package com.epam.izh.rd.online.service;
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;
/**
* Данный класс обязан использовать StreamApi из функционала Java 8. Функциональность должна быть идентична
@@ -16,36 +11,38 @@
public class StreamApiTextStatisticsAnalyzer implements TextStatisticsAnalyzer {
@Override
public int countSumLengthOfWords(String text) {
- return 0;
+ return Arrays.stream(text.split("\\s*\\W\\s*")).filter(x -> !x.equals("")).mapToInt(String::length).sum();
}
@Override
public int countNumberOfWords(String text) {
- return 0;
+ return (int) Arrays.stream(text.split("\\s*\\W\\s*")).filter(x -> !x.equals("")).count();
}
@Override
public int countNumberOfUniqueWords(String text) {
- return 0;
+ return (int) Arrays.stream(text.split("\\s*\\W\\s*")).filter(x -> !x.equals("")).distinct().count();
}
@Override
public List getWords(String text) {
- return emptyList();
+ return Arrays.stream(text.split("\\s*\\W\\s*")).filter(x -> !x.equals("")).collect(Collectors.toList());
}
@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.toMap(key -> key, value -> 1, Integer::sum));
}
@Override
public List sortWordsByLength(String text, Direction direction) {
- return emptyList();
+ return direction.name().contains("ASC") ?
+ getWords(text).stream().sorted(Comparator.comparing(String::length)).collect(Collectors.toList()) :
+ getWords(text).stream().sorted(Comparator.comparing(String::length).reversed()).collect(Collectors.toList());
}
}