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..bb585fa 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
@@ -3,6 +3,8 @@
import com.epam.izh.rd.online.helper.Direction;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import static java.util.Collections.*;
@@ -13,6 +15,7 @@
*
* При необходимости, можно создать внутри данного класса дополнительные вспомогательные приватные методы.
*/
+
public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer {
/**
@@ -23,7 +26,13 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer {
*/
@Override
public int countSumLengthOfWords(String text) {
- return 0;
+ int sum=0;
+ List listText = getWords(text);
+
+ for(String list: listText){
+ sum +=list.length();
+ }
+ return sum;
}
/**
@@ -34,7 +43,8 @@ public int countSumLengthOfWords(String text) {
*/
@Override
public int countNumberOfWords(String text) {
- return 0;
+ List listText = getWords(text);
+ return listText.size();
}
/**
@@ -44,7 +54,9 @@ public int countNumberOfWords(String text) {
*/
@Override
public int countNumberOfUniqueWords(String text) {
- return 0;
+
+ Set setString = getUniqueWords(text);
+ return setString.size();
}
/**
@@ -57,7 +69,16 @@ public int countNumberOfUniqueWords(String text) {
*/
@Override
public List getWords(String text) {
- return emptyList();
+ Pattern pattern = Pattern.compile("[^A-Z a-z\n]");
+ Matcher matcher = pattern.matcher(text);
+ String s = matcher.replaceAll("");
+ List list = new ArrayList<>();
+ String strings[];
+ strings=s.split("[ \n]+");
+ for (int i=0; i getWords(String text) {
*/
@Override
public Set getUniqueWords(String text) {
- return emptySet();
+ Pattern pattern = Pattern.compile("[^A-Z a-z\n]");
+ Matcher matcher = pattern.matcher(text);
+ String s = matcher.replaceAll("");
+ Set set = new HashSet<>();
+ String strings[];
+ strings=s.split("[ \n]+");
+ for (int i=0; i getUniqueWords(String text) {
*/
@Override
public Map countNumberOfWordsRepetitions(String text) {
- return emptyMap();
+ Map map = new HashMap<>();
+ List listText = getWords(text);
+ int numRepeat=0;
+ for(String s : listText) {
+ for (String s2 : listText) {
+ if (s.compareTo(s2) == 0) {
+ numRepeat++;
+ }
+ }
+ map.put(s, numRepeat);
+ numRepeat=0;
+ }
+ System.out.print(map);
+ return map;
}
/**
@@ -95,6 +139,17 @@ public Map countNumberOfWordsRepetitions(String text) {
*/
@Override
public List sortWordsByLength(String text, Direction direction) {
- return emptyList();
+
+ List listText= getWords(text);
+
+
+ if (direction==Direction.ASC) {
+ Collections.sort(listText, (o1, o2) -> o1.length() - o2.length());
+ }
+ if (direction==Direction.DESC){
+ Collections.sort(listText, (o1, o2) -> -(o1.length() - o2.length()));
+ }
+
+ return listText;
}
}
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..ccc10a3 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,12 @@
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.lang.reflect.Array;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import static java.util.Collections.*;
@@ -16,36 +18,67 @@
public class StreamApiTextStatisticsAnalyzer implements TextStatisticsAnalyzer {
@Override
public int countSumLengthOfWords(String text) {
- return 0;
+ List listText = getWords(text);
+ return listText.stream().reduce(0, (sum, s) -> sum += s.length(), Integer::sum);
}
@Override
public int countNumberOfWords(String text) {
- return 0;
+
+ return (int)getWords(text).stream().count();
}
@Override
- public int countNumberOfUniqueWords(String text) {
- return 0;
+ public int countNumberOfUniqueWords(String text)
+ {
+ return (int)getWords(text).stream().distinct().count();
}
@Override
public List getWords(String text) {
- return emptyList();
+ Pattern pattern = Pattern.compile("[^A-Z a-z\n]");
+ Matcher matcher = pattern.matcher(text);
+ String s = matcher.replaceAll("");
+
+ String strings[];
+ strings=s.split("[ \n]+");
+ List list = Arrays.stream(strings).collect(Collectors.toList());
+ return list;
}
@Override
public Set getUniqueWords(String text) {
- return emptySet();
+ Pattern pattern = Pattern.compile("[^A-Z a-z\n]");
+ Matcher matcher = pattern.matcher(text);
+ String s = matcher.replaceAll("");
+
+ String strings[];
+ strings=s.split("[ \n]+");
+ Set set = Arrays.stream(strings).collect(Collectors.toSet());
+ return set;
}
@Override
public Map countNumberOfWordsRepetitions(String text) {
- return emptyMap();
+ List stringList = getWords(text);
+ Set stringSet = new HashSet<>(stringList);
+ Map stringIntegerMap = new HashMap<>();
+ stringSet.stream().forEach((m) -> stringIntegerMap.put(m,getRepeat(m, stringList)));
+ return stringIntegerMap;
+ }
+ private int getRepeat(String word, List list) {
+ return (int) list.stream().filter(s -> s.equals(word)).count();
}
@Override
public List sortWordsByLength(String text, Direction direction) {
- return emptyList();
+ if(direction==Direction.ASC){
+ return getWords(text).stream().sorted((o1, o2) -> o1.length() - o2.length()).collect(Collectors.toList());
+ }
+ if(direction==Direction.DESC){
+ return getWords(text).stream().sorted((o1, o2) -> -(o1.length() - o2.length())).collect(Collectors.toList());
+ }
+ return null;
+
}
}