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 52d197e..d62a097 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 @@ -21,7 +21,12 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer { */ @Override public int countSumLengthOfWords(String text) { - return 0; + List allWords = getWords(text); + int sumLengthOfWords = 0; + for (String s : allWords) { + sumLengthOfWords += s.length(); + } + return sumLengthOfWords; } /** @@ -32,7 +37,7 @@ public int countSumLengthOfWords(String text) { */ @Override public int countNumberOfWords(String text) { - return 0; + return getWords(text).size(); } /** @@ -42,7 +47,7 @@ public int countNumberOfWords(String text) { */ @Override public int countNumberOfUniqueWords(String text) { - return 0; + return getUniqueWords(text).size(); } /** @@ -55,7 +60,7 @@ public int countNumberOfUniqueWords(String text) { */ @Override public List getWords(String text) { - return new ArrayList<>(); + return new ArrayList<>(Arrays.asList(text.split("\\W+"))); } /** @@ -68,7 +73,7 @@ public List getWords(String text) { */ @Override public Set getUniqueWords(String text) { - return new HashSet<>(); + return new HashSet<>(getWords(text)); } /** @@ -80,7 +85,13 @@ public Set getUniqueWords(String text) { */ @Override public Map countNumberOfWordsRepetitions(String text) { - return Collections.emptyMap(); + List allWords = getWords(text); + Map countWordsRepetitionsMap = new LinkedHashMap<>(); + for (String s : allWords) { + int repetitionCounter = Collections.frequency(allWords, s); + countWordsRepetitionsMap.put(s, repetitionCounter); + } + return countWordsRepetitionsMap; } /** @@ -93,6 +104,13 @@ public Map countNumberOfWordsRepetitions(String text) { */ @Override public List sortWordsByLength(String text, Direction direction) { - return new ArrayList<>(); + ArrayList allWords = (ArrayList) getWords(text); + allWords.sort(new Comparator() { + @Override + public int compare(String o1, String o2) { + return direction == Direction.ASC ? o1.length() - o2.length() : o2.length() - o1.length(); + } + }); + return allWords; } } 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 1e3c262..14ede4a 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,9 +2,8 @@ import com.epam.izh.rd.online.helper.Direction; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; /** * Данный класс обязан использовать StreamApi из функционала Java 8. Функциональность должна быть идентична @@ -13,36 +12,43 @@ 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 null; + List listOfWords = new ArrayList<>(); + String [] arrayOfWords = text.split("\\W+"); + Arrays.stream(arrayOfWords).forEach(listOfWords::add); + return listOfWords; } @Override public Set getUniqueWords(String text) { - return null; + return getWords(text).stream().collect(Collectors.toSet()); } @Override public Map countNumberOfWordsRepetitions(String text) { - return null; + return getUniqueWords(text).stream().collect(Collectors.toMap(e -> e, + e -> Collections.frequency(getWords(text), e))); } @Override public List sortWordsByLength(String text, Direction direction) { - return null; + return getWords(text).stream().sorted + ((o1, o2) -> direction == Direction.ASC ? o1.length() - o2.length() : o2.length() - o1.length()) + .collect(Collectors.toList()); } }