From 96e06b5f409f3e29e5f0038665fbe3ee58fd4ea5 Mon Sep 17 00:00:00 2001 From: Yurii Erofeevskii Date: Sun, 5 Jul 2020 14:48:44 +0300 Subject: [PATCH 1/2] Done --- java-collections.iml | 24 ++++++++ .../java/com/epam/izh/rd/online/Main.java | 6 +- .../service/SimpleTextStatisticsAnalyzer.java | 57 +++++++++++++++---- .../StreamApiTextStatisticsAnalyzer.java | 24 ++++---- 4 files changed, 87 insertions(+), 24 deletions(-) create mode 100644 java-collections.iml 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..b04a567 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,15 @@ package com.epam.izh.rd.online; +import com.epam.izh.rd.online.service.SimpleTextStatisticsAnalyzer; + import java.io.IOException; import java.net.URISyntaxException; public class Main { public static void main(String[] args) throws IOException, URISyntaxException { - + SimpleTextStatisticsAnalyzer t = new SimpleTextStatisticsAnalyzer(); + t.countNumberOfWordsRepetitions("One, two, three, three - one, tWo, tWo!!"); + //t.countSumLengthOfWords("One, I - tWo!!"); } } 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..1e452b5 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,8 +4,6 @@ import java.util.*; -import static java.util.Collections.*; - /** * Совет: * Начните с реализации метода {@link SimpleTextStatisticsAnalyzer#getWords(String)}. @@ -23,7 +21,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 +37,7 @@ public int countSumLengthOfWords(String text) { */ @Override public int countNumberOfWords(String text) { - return 0; + return getWords(text).size(); } /** @@ -44,20 +47,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 +81,7 @@ public List getWords(String text) { */ @Override public Set getUniqueWords(String text) { - return emptySet(); + return new HashSet<>(getWords(text)); } /** @@ -82,7 +93,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 +119,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..830f17f 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,40 @@ 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()); } } From 6703cbe627e42a4354b0ebf84504d7a0c299c097 Mon Sep 17 00:00:00 2001 From: Yurii Erofeevskii Date: Sun, 5 Jul 2020 14:54:13 +0300 Subject: [PATCH 2/2] Modify --- src/main/java/com/epam/izh/rd/online/Main.java | 5 ----- .../izh/rd/online/service/SimpleTextStatisticsAnalyzer.java | 1 - .../rd/online/service/StreamApiTextStatisticsAnalyzer.java | 5 ----- 3 files changed, 11 deletions(-) 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 b04a567..59817b2 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -1,15 +1,10 @@ package com.epam.izh.rd.online; -import com.epam.izh.rd.online.service.SimpleTextStatisticsAnalyzer; - import java.io.IOException; import java.net.URISyntaxException; public class Main { public static void main(String[] args) throws IOException, URISyntaxException { - SimpleTextStatisticsAnalyzer t = new SimpleTextStatisticsAnalyzer(); - t.countNumberOfWordsRepetitions("One, two, three, three - one, tWo, tWo!!"); - //t.countSumLengthOfWords("One, I - tWo!!"); } } 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 1e452b5..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,7 +1,6 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.helper.Direction; - import java.util.*; /** 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 830f17f..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,12 +1,9 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.helper.Direction; - import java.util.*; import java.util.stream.Collectors; -import static java.util.Collections.*; - /** * Данный класс обязан использовать StreamApi из функционала Java 8. Функциональность должна быть идентична * {@link SimpleTextStatisticsAnalyzer}. @@ -29,13 +26,11 @@ public int countNumberOfUniqueWords(String text) { @Override public List getWords(String text) { - return Arrays.stream(text.split("\\s*\\W\\s*")).filter(x -> !x.equals("")).collect(Collectors.toList()); } @Override public Set getUniqueWords(String text) { - return getWords(text).stream().collect(Collectors.toSet()); }