Skip to content

Commit bdc0d9d

Browse files
committed
Added realisation of the list and stream api
1 parent 4dadf70 commit bdc0d9d

3 files changed

Lines changed: 71 additions & 18 deletions

File tree

java-collections.iml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
4+
<output url="file://$MODULE_DIR$/target/classes" />
5+
<output-test url="file://$MODULE_DIR$/target/test-classes" />
6+
<content url="file://$MODULE_DIR$">
7+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
8+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
9+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
10+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
11+
<excludeFolder url="file://$MODULE_DIR$/target" />
12+
</content>
13+
<orderEntry type="inheritedJdk" />
14+
<orderEntry type="sourceFolder" forTests="false" />
15+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.5.2" level="project" />
16+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.5.2" level="project" />
17+
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
18+
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
19+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.5.2" level="project" />
20+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.5.2" level="project" />
21+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.5.2" level="project" />
22+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.5.2" level="project" />
23+
</component>
24+
</module>

src/main/java/com/epam/izh/rd/online/service/SimpleTextStatisticsAnalyzer.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.epam.izh.rd.online.helper.Direction;
44

5+
import java.lang.reflect.Array;
56
import java.util.*;
67

78
import static java.util.Collections.*;
@@ -23,7 +24,11 @@ public class SimpleTextStatisticsAnalyzer implements TextStatisticsAnalyzer {
2324
*/
2425
@Override
2526
public int countSumLengthOfWords(String text) {
26-
return 0;
27+
int countSumLengthOfWords = 0;
28+
for (String word : getWords(text)) {
29+
countSumLengthOfWords += word.length();
30+
}
31+
return countSumLengthOfWords;
2732
}
2833

2934
/**
@@ -34,7 +39,7 @@ public int countSumLengthOfWords(String text) {
3439
*/
3540
@Override
3641
public int countNumberOfWords(String text) {
37-
return 0;
42+
return getWords(text).size();
3843
}
3944

4045
/**
@@ -44,7 +49,7 @@ public int countNumberOfWords(String text) {
4449
*/
4550
@Override
4651
public int countNumberOfUniqueWords(String text) {
47-
return 0;
52+
return getUniqueWords(text).size();
4853
}
4954

5055
/**
@@ -57,7 +62,7 @@ public int countNumberOfUniqueWords(String text) {
5762
*/
5863
@Override
5964
public List<String> getWords(String text) {
60-
return emptyList();
65+
return Arrays.asList(text.split("[\\W]+"));
6166
}
6267

6368
/**
@@ -70,7 +75,7 @@ public List<String> getWords(String text) {
7075
*/
7176
@Override
7277
public Set<String> getUniqueWords(String text) {
73-
return emptySet();
78+
return new HashSet<>(getWords(text));
7479
}
7580

7681
/**
@@ -82,7 +87,15 @@ public Set<String> getUniqueWords(String text) {
8287
*/
8388
@Override
8489
public Map<String, Integer> countNumberOfWordsRepetitions(String text) {
85-
return emptyMap();
90+
Map<String, Integer> repeatWords = new HashMap<>();
91+
for (String word : getWords(text)) {
92+
Integer q = repeatWords.put(word, 1);
93+
if (q != null) {
94+
repeatWords.put(word, q + 1);
95+
}
96+
97+
}
98+
return repeatWords;
8699
}
87100

88101
/**
@@ -95,6 +108,13 @@ public Map<String, Integer> countNumberOfWordsRepetitions(String text) {
95108
*/
96109
@Override
97110
public List<String> sortWordsByLength(String text, Direction direction) {
98-
return emptyList();
111+
List<String> words = new ArrayList<>(getUniqueWords(text));
112+
words.sort(Comparator.comparingInt(String::length));
113+
if (direction.name().equals("DESC")) {
114+
Collections.reverse(words);
115+
}
116+
return words;
99117
}
118+
119+
100120
}

src/main/java/com/epam/izh/rd/online/service/StreamApiTextStatisticsAnalyzer.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import com.epam.izh.rd.online.helper.Direction;
44

5-
import java.util.Collections;
6-
import java.util.List;
7-
import java.util.Map;
8-
import java.util.Set;
5+
import java.util.*;
6+
import java.util.stream.Collector;
7+
import java.util.stream.Collectors;
8+
import java.util.stream.IntStream;
9+
import java.util.stream.Stream;
910

1011
import static java.util.Collections.*;
12+
import static java.util.stream.Collectors.reducing;
1113

1214
/**
1315
* Данный класс обязан использовать StreamApi из функционала Java 8. Функциональность должна быть идентична
@@ -16,36 +18,43 @@
1618
public class StreamApiTextStatisticsAnalyzer implements TextStatisticsAnalyzer {
1719
@Override
1820
public int countSumLengthOfWords(String text) {
19-
return 0;
21+
return getWords(text).stream().mapToInt(String::length).sum();
2022
}
2123

2224
@Override
2325
public int countNumberOfWords(String text) {
24-
return 0;
26+
return Math.toIntExact(getWords(text).stream().count());
2527
}
2628

2729
@Override
2830
public int countNumberOfUniqueWords(String text) {
29-
return 0;
31+
return Math.toIntExact(getWords(text).stream().distinct().count());
3032
}
3133

3234
@Override
3335
public List<String> getWords(String text) {
34-
return emptyList();
36+
return Stream.of(text.split("[\\W]+")).collect(Collectors.toList());
3537
}
3638

3739
@Override
3840
public Set<String> getUniqueWords(String text) {
39-
return emptySet();
41+
return getWords(text).stream().collect(Collectors.toSet());
4042
}
4143

4244
@Override
4345
public Map<String, Integer> countNumberOfWordsRepetitions(String text) {
44-
return emptyMap();
46+
return getWords(text).stream().collect(Collectors.groupingBy(s -> s, reducing(0, e -> 1, Integer::sum)));
4547
}
4648

4749
@Override
4850
public List<String> sortWordsByLength(String text, Direction direction) {
49-
return emptyList();
51+
52+
return getWords(text).stream()
53+
.sorted(
54+
direction == Direction.ASC?
55+
Comparator.comparing(String::length):
56+
Comparator.comparing(String::length).reversed()
57+
).collect(Collectors.toList());
58+
5059
}
5160
}

0 commit comments

Comments
 (0)