From 4f2572c7bd8217a9b21192f0a01ea14866816e77 Mon Sep 17 00:00:00 2001 From: Philipp3000 Date: Mon, 26 Oct 2020 18:33:57 +0300 Subject: [PATCH] Cool --- .../service/SimpleTextStatisticsAnalyzer.java | 49 ++++++++++++++++--- .../StreamApiTextStatisticsAnalyzer.java | 30 ++++++++---- 2 files changed, 62 insertions(+), 17 deletions(-) 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..2499d69 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,7 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer { */ @Override public int countSumLengthOfWords(String text) { - return 0; + return text.replaceAll("[^\\w]","").length(); } /** @@ -34,7 +34,7 @@ public int countSumLengthOfWords(String text) { */ @Override public int countNumberOfWords(String text) { - return 0; + return getWords(text).size(); } /** @@ -44,7 +44,7 @@ public int countNumberOfWords(String text) { */ @Override public int countNumberOfUniqueWords(String text) { - return 0; + return getUniqueWords(text).size(); } /** @@ -56,8 +56,17 @@ public int countNumberOfUniqueWords(String text) { * @param text текст */ @Override + public List getWords(String text) { - return emptyList(); + String[] s = text.split("\\s"); + for (int i = 0; i < s.length; i++) { + s[i] = s[i].replaceAll("\\W",""); + } + List strings = new ArrayList<>(); + for (int i = 0; i < s.length; i++) { + if (!s[i].equals("")) strings.add(s[i]); + } + return strings; } /** @@ -70,7 +79,7 @@ public List getWords(String text) { */ @Override public Set getUniqueWords(String text) { - return emptySet(); + return new HashSet<>(getWords(text)); } /** @@ -82,7 +91,16 @@ public Set getUniqueWords(String text) { */ @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + Map map = new HashMap<>(); + List list = getWords(text); + for (String s1 : list) { + if (map.containsKey(s1)) { + map.put(s1,map.get(s1) + 1); + } else { + map.put(s1,1); + } + } + return map; } /** @@ -95,6 +113,23 @@ public Map countNumberOfWordsRepetitions(String text) { */ @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + List listAll = getWords(text); + switch (direction){ + case ASC: listAll.sort(new Comparator() { + @Override + public int compare(String o1, String o2) { + return o1.length() - o2.length(); + } + }); + break; + case DESC: listAll.sort(new Comparator() { + @Override + public int compare(String o1, String o2) { + return o2.length() - o1.length(); + } + }); + break; + } + return listAll; } } 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..8650fdd 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,8 @@ 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 static java.util.Collections.*; @@ -16,36 +14,48 @@ public class StreamApiTextStatisticsAnalyzer implements TextStatisticsAnalyzer { @Override public int countSumLengthOfWords(String text) { - return 0; + return getWords(text).stream() + .mapToInt(i -> i.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 Arrays.stream(text.split("\\s")) + .map(s -> s.replaceAll("\\W","")) + .filter(s -> !s.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(s -> s,s -> 1,Integer::sum)); } @Override public List sortWordsByLength(String text, Direction direction) { + switch (direction){ + case DESC:return getWords(text).stream().sorted(Comparator.comparingInt(String::length).reversed()).collect(Collectors.toList()); + case ASC:return getWords(text).stream().sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList()); + } return emptyList(); } }