From 02ceb985a385dfac9f45abb661a1d4a3748f08bd Mon Sep 17 00:00:00 2001 From: Alexsandr Chevtaev Date: Sun, 9 Aug 2020 10:56:43 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=9D=D0=95=20=D1=84=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BF=D1=83=D1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SimpleTextStatisticsAnalyzer.java | 150 +++++++++++++++++- 1 file changed, 143 insertions(+), 7 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..8e85e07 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 @@ -2,6 +2,7 @@ import com.epam.izh.rd.online.helper.Direction; +import java.io.File; import java.util.*; import static java.util.Collections.*; @@ -23,7 +24,14 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer { */ @Override public int countSumLengthOfWords(String text) { - return 0; + + String str = ""; + + for (String x : getWords(text)){ + str = str + x; + } + + return str.length(); } /** @@ -34,7 +42,8 @@ public int countSumLengthOfWords(String text) { */ @Override public int countNumberOfWords(String text) { - return 0; + + return getWords(text).size(); } /** @@ -44,7 +53,21 @@ public int countNumberOfWords(String text) { */ @Override public int countNumberOfUniqueWords(String text) { - return 0; + + List array = getWords(text); + int count = 1; + + for (int i = 0; i < array.size() - 1; i++ ) { + count++; + for (int y = i + 1; y < array.size(); y++ ) { + if (array.get(i).equals(array.get(y))) { + count--; + break; + } + } + } + + return count; } /** @@ -57,7 +80,14 @@ public int countNumberOfUniqueWords(String text) { */ @Override public List getWords(String text) { - return emptyList(); + ArrayList array = new ArrayList<>(); + + StringTokenizer path_array = new StringTokenizer(text, " .,\"-!;:\r\n"); + while(path_array.hasMoreElements()) { + array.add(path_array.nextToken()); + + } + return array; } /** @@ -70,7 +100,14 @@ public List getWords(String text) { */ @Override public Set getUniqueWords(String text) { - return emptySet(); + + Set str = new HashSet<>(); + + for (String x : getWords(text)) { + str.add(x); + } + + return str; } /** @@ -82,7 +119,22 @@ public Set getUniqueWords(String text) { */ @Override public Map countNumberOfWordsRepetitions(String text) { - return emptyMap(); + + Map map = new HashMap<>(); + List array = getWords(text); + Set str = getUniqueWords(text); + + for (String x : str) { + int count = 0; + for (int i = 0; i < array.size(); i++) { + if (x.equals(array.get(i))) { + count++; + } + } + map.put(x, count); + } + + return map; } /** @@ -95,6 +147,90 @@ public Map countNumberOfWordsRepetitions(String text) { */ @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + + List array = getWords(text); + + if(direction.equals("DESC")) { + + // сортируем по длинне слов + for (int i = 0; i < array.size(); i++) { + + for (int j = 0; j < array.size(); j++) { + + if (array.get(i).toString().length() < array.get(j).toString().length()) { + + String x = array.get(j).toString(); + array.set(j, array.get(i)); + array.set(i, x); + + } + } + } + + // сортируем слова одинаковой длинны в алфавитном порядке + for (int i = 0; i < array.size(); i++) { + + for (int j = 0; j < array.size(); j++) { + + if ((array.get(i).toString().length() == array.get(j).toString().length()) && (array.get(i).toString().compareTo(array.get(j).toString()) < 0)) { + + String x = array.get(j).toString(); + array.set(j, array.get(i)); + array.set(i, x); + + + } + } + } + System.out.println("DESC"); + for (int i = 0; i < array.size(); i++) { + + System.out.println(array.get(i)); + } + System.out.println(); + + return array; + } + + // сортируем по длинне слов + for (int i = 0; i < array.size(); i++) { + + for (int j = 0; j < array.size(); j++) { + + if (array.get(i).toString().length() > array.get(j).toString().length()) { + + String x = array.get(j).toString(); + array.set(j, array.get(i)); + array.set(i, x); + + } + } + } + + // сортируем слова одинаковой длинны в алфавитном порядке + for (int i = 0; i < array.size(); i++) { + + for (int j = 0; j < array.size(); j++) { + + if ((array.get(i).toString().length() == array.get(j).toString().length()) && (array.get(i).toString().compareTo(array.get(j).toString()) > 0)) { + + String x = array.get(j).toString(); + array.set(j, array.get(i)); + array.set(i, x); + + + } + } + } + System.out.println("ASC"); + for (int i = 0; i < array.size(); i++) { + + System.out.println(array.get(i)); + } + System.out.println(); + + return array; + + } } From 5914aebf77e2cb823b877184ce6206b45e6e1c6e Mon Sep 17 00:00:00 2001 From: Alexsandr Chevtaev Date: Sun, 9 Aug 2020 14:29:29 +0300 Subject: [PATCH 2/5] test --- .../service/SimpleTextStatisticsAnalyzer.java | 83 ++++++++++--------- 1 file changed, 45 insertions(+), 38 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 8e85e07..83dd054 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 @@ -148,18 +148,33 @@ public Map countNumberOfWordsRepetitions(String text) { @Override public List sortWordsByLength(String text, Direction direction) { - List array = getWords(text); + List array = getWords(text); + + switch (direction) { + case ASC: { + System.out.println("ASC"); + return array; + break; + } + case DESC: { + System.out.println("DESC"); + return array; + break; + } + } - if(direction.equals("DESC")) { + + /* + if (direction.equals("ASC")) { // сортируем по длинне слов for (int i = 0; i < array.size(); i++) { for (int j = 0; j < array.size(); j++) { - if (array.get(i).toString().length() < array.get(j).toString().length()) { + if (array.get(i).length() > array.get(j).length()) { - String x = array.get(j).toString(); + String x = array.get(j); array.set(j, array.get(i)); array.set(i, x); @@ -172,9 +187,9 @@ public List sortWordsByLength(String text, Direction direction) { for (int j = 0; j < array.size(); j++) { - if ((array.get(i).toString().length() == array.get(j).toString().length()) && (array.get(i).toString().compareTo(array.get(j).toString()) < 0)) { + if ((array.get(i).length() == array.get(j).length()) && (array.get(i).compareTo(array.get(j)) > 0)) { - String x = array.get(j).toString(); + String x = array.get(j); array.set(j, array.get(i)); array.set(i, x); @@ -182,55 +197,47 @@ public List sortWordsByLength(String text, Direction direction) { } } } - System.out.println("DESC"); - for (int i = 0; i < array.size(); i++) { - - System.out.println(array.get(i)); - } - System.out.println(); - return array; - } + } else { - // сортируем по длинне слов - for (int i = 0; i < array.size(); i++) { - for (int j = 0; j < array.size(); j++) { + // сортируем по длинне слов + for (int i = 0; i < array.size(); i++) { + + for (int j = 0; j < array.size(); j++) { - if (array.get(i).toString().length() > array.get(j).toString().length()) { + if (array.get(i).length() < array.get(j).length()) { - String x = array.get(j).toString(); - array.set(j, array.get(i)); - array.set(i, x); + String x = array.get(j); + array.set(j, array.get(i)); + array.set(i, x); + } } } - } - // сортируем слова одинаковой длинны в алфавитном порядке - for (int i = 0; i < array.size(); i++) { - for (int j = 0; j < array.size(); j++) { + // сортируем слова одинаковой длинны в алфавитном порядке + for (int i = 0; i < array.size(); i++) { - if ((array.get(i).toString().length() == array.get(j).toString().length()) && (array.get(i).toString().compareTo(array.get(j).toString()) > 0)) { + for (int j = 0; j < array.size(); j++) { - String x = array.get(j).toString(); - array.set(j, array.get(i)); - array.set(i, x); + if ((array.get(i).length() == array.get(j).length()) && (array.get(i).compareTo(array.get(j)) < 0)) { + String x = array.get(j); + array.set(j, array.get(i)); + array.set(i, x); + + } } } - } - System.out.println("ASC"); - for (int i = 0; i < array.size(); i++) { - - System.out.println(array.get(i)); - } - System.out.println(); - return array; + return array; + } +*/ } -} + } + From 33cceb4668d4b872e46550aa7355834e281e8a5c Mon Sep 17 00:00:00 2001 From: Alexsandr Chevtaev Date: Sun, 9 Aug 2020 14:50:25 +0300 Subject: [PATCH 3/5] test2 --- .../service/SimpleTextStatisticsAnalyzer.java | 53 +++++++------------ 1 file changed, 19 insertions(+), 34 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 83dd054..259ce4e 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 @@ -150,21 +150,6 @@ public List sortWordsByLength(String text, Direction direction) { List array = getWords(text); - switch (direction) { - case ASC: { - System.out.println("ASC"); - return array; - break; - } - case DESC: { - System.out.println("DESC"); - return array; - break; - } - } - - - /* if (direction.equals("ASC")) { // сортируем по длинне слов @@ -199,44 +184,44 @@ public List sortWordsByLength(String text, Direction direction) { } return array; } else { + if (direction.equals("DESC")) { - // сортируем по длинне слов - for (int i = 0; i < array.size(); i++) { + // сортируем по длинне слов + for (int i = 0; i < array.size(); i++) { - for (int j = 0; j < array.size(); j++) { + for (int j = 0; j < array.size(); j++) { - if (array.get(i).length() < array.get(j).length()) { + if (array.get(i).length() < array.get(j).length()) { - String x = array.get(j); - array.set(j, array.get(i)); - array.set(i, x); + String x = array.get(j); + array.set(j, array.get(i)); + array.set(i, x); + } } } - } - // сортируем слова одинаковой длинны в алфавитном порядке - for (int i = 0; i < array.size(); i++) { + // сортируем слова одинаковой длинны в алфавитном порядке + for (int i = 0; i < array.size(); i++) { - for (int j = 0; j < array.size(); j++) { + for (int j = 0; j < array.size(); j++) { - if ((array.get(i).length() == array.get(j).length()) && (array.get(i).compareTo(array.get(j)) < 0)) { + if ((array.get(i).length() == array.get(j).length()) && (array.get(i).compareTo(array.get(j)) < 0)) { - String x = array.get(j); - array.set(j, array.get(i)); - array.set(i, x); + String x = array.get(j); + array.set(j, array.get(i)); + array.set(i, x); + } } } - } - - return array; + return array; + } else {throw new IllegalArgumentException();} } -*/ } } From b1430bc1025c29999a3c6e9d24a7ef8eef6f5134 Mon Sep 17 00:00:00 2001 From: Alexsandr Chevtaev Date: Mon, 10 Aug 2020 17:23:27 +0300 Subject: [PATCH 4/5] =?UTF-8?q?=D0=9A=D0=BE=D0=BC=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SimpleTextStatisticsAnalyzer.java | 77 ++----------------- 1 file changed, 7 insertions(+), 70 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 259ce4e..87fc1f2 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 @@ -150,79 +150,16 @@ public List sortWordsByLength(String text, Direction direction) { List array = getWords(text); - if (direction.equals("ASC")) { - - // сортируем по длинне слов - for (int i = 0; i < array.size(); i++) { - - for (int j = 0; j < array.size(); j++) { - - if (array.get(i).length() > array.get(j).length()) { - - String x = array.get(j); - array.set(j, array.get(i)); - array.set(i, x); - - } - } - } - - // сортируем слова одинаковой длинны в алфавитном порядке - for (int i = 0; i < array.size(); i++) { - - for (int j = 0; j < array.size(); j++) { - - if ((array.get(i).length() == array.get(j).length()) && (array.get(i).compareTo(array.get(j)) > 0)) { - - String x = array.get(j); - array.set(j, array.get(i)); - array.set(i, x); - - - } - } - } + if (direction == Direction.DESC) { + array.sort(Comparator.comparing(String :: length).thenComparing(String :: compareTo).reversed()); return array; - } else { - if (direction.equals("DESC")) { - - - // сортируем по длинне слов - for (int i = 0; i < array.size(); i++) { - - for (int j = 0; j < array.size(); j++) { - - if (array.get(i).length() < array.get(j).length()) { - - String x = array.get(j); - array.set(j, array.get(i)); - array.set(i, x); - - } - } - } - - - // сортируем слова одинаковой длинны в алфавитном порядке - for (int i = 0; i < array.size(); i++) { - - for (int j = 0; j < array.size(); j++) { - - if ((array.get(i).length() == array.get(j).length()) && (array.get(i).compareTo(array.get(j)) < 0)) { - - String x = array.get(j); - array.set(j, array.get(i)); - array.set(i, x); - - - } - } - } - + } else + if (direction == Direction.ASC) { + array.sort(Comparator.comparing(String :: length).thenComparing(String :: compareTo)); return array; - } else {throw new IllegalArgumentException();} + } else { throw new IllegalArgumentException();} } } - } + From 6200cc22aca983749782fe30f8b0a2a69ead725b Mon Sep 17 00:00:00 2001 From: Alexsandr Chevtaev Date: Tue, 11 Aug 2020 18:28:25 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=D0=92=D1=81=D0=B5=20=D0=B7=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SimpleTextStatisticsAnalyzer.java | 10 ++---- .../StreamApiTextStatisticsAnalyzer.java | 35 ++++++++++++------- 2 files changed, 25 insertions(+), 20 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 87fc1f2..8684709 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,6 +4,7 @@ import java.io.File; import java.util.*; +import java.util.stream.Collectors; import static java.util.Collections.*; @@ -24,14 +25,7 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer { */ @Override public int countSumLengthOfWords(String text) { - - String str = ""; - - for (String x : getWords(text)){ - str = str + x; - } - - return str.length(); + return getWords(text).stream().collect(Collectors.joining()).length(); } /** 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..ae1ec35 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,12 +2,11 @@ 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.*; +import static java.util.stream.Collectors.reducing; /** * Данный класс обязан использовать StreamApi из функционала Java 8. Функциональность должна быть идентична @@ -16,36 +15,48 @@ 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) getWords(text).stream().collect(Collectors.toSet()).stream().count(); } @Override public List getWords(String text) { - return emptyList(); + return Arrays.stream(text.split("\\W")).filter(x -> x.length() > 0).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.groupingBy(s -> s, reducing(0, e -> 1, Integer::sum))); } @Override public List sortWordsByLength(String text, Direction direction) { - return emptyList(); + + if (direction == Direction.DESC) { + return getWords(text).stream().sorted(Comparator.comparing(String :: length).thenComparing(String :: compareTo).reversed()).collect(Collectors.toList()); + } else + if (direction == Direction.ASC) { + + return getWords(text).stream().sorted(Comparator.comparing(String :: length).thenComparing(String :: compareTo)).collect(Collectors.toList()); + } else { throw new IllegalArgumentException();} } -} + + + } +