浏览代码

all tests pass except one for a class we're not allowed to edit :P

Allison Ziegler 6 年前
父节点
当前提交
07c4fc3b93

+ 2
- 1
.idea/compiler.xml 查看文件

@@ -7,10 +7,11 @@
7 7
         <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
8 8
         <outputRelativeToContentRoot value="true" />
9 9
         <module name="looptest" />
10
+        <module name="streamdemo" />
10 11
       </profile>
11 12
     </annotationProcessing>
12 13
     <bytecodeTargetLevel target="1.8">
13
-      <module name="looptest" target="1.8" />
14
+      <module name="streamdemo" target="8" />
14 15
     </bytecodeTargetLevel>
15 16
   </component>
16 17
 </project>

+ 492
- 863
.idea/workspace.xml
文件差异内容过多而无法显示
查看文件


+ 16
- 7
src/main/java/com/zipcodewilmington/streams/StreamFilter.java 查看文件

@@ -5,7 +5,10 @@ import com.zipcodewilmington.streams.anthropoid.PersonFactory;
5 5
 import com.zipcodewilmington.streams.tools.RandomUtils;
6 6
 import com.zipcodewilmington.streams.tools.StringUtils;
7 7
 
8
+import java.util.ArrayList;
9
+import java.util.Arrays;
8 10
 import java.util.List;
11
+import java.util.function.Predicate;
9 12
 import java.util.stream.Collectors;
10 13
 import java.util.stream.Stream;
11 14
 
@@ -20,7 +23,9 @@ public class StreamFilter {
20 23
      * No arg constructor
21 24
      */ //TODO - construct person stream of 100 person objects; startingCharacter is a random capital letter
22 25
     public StreamFilter() {
23
-        this(Stream.empty(), null);
26
+        //this(Stream.empty(), null);
27
+        personStream = PersonFactory.createPersonStream(100);
28
+        startingCharacter = String.valueOf((char) 'A' + (Math.random()) * 26);
24 29
     }
25 30
 
26 31
     /**
@@ -28,7 +33,8 @@ public class StreamFilter {
28 33
      * @param startingCharacter - character to filter by
29 34
      */ //TODO
30 35
     public StreamFilter(Person[] people, Character startingCharacter) {
31
-        this(Stream.empty(), null);
36
+        personStream = Arrays.stream(people);
37
+        this.startingCharacter = String.valueOf(startingCharacter);
32 38
     }
33 39
 
34 40
     /**
@@ -36,7 +42,8 @@ public class StreamFilter {
36 42
      * @param startingCharacter - character to filter by
37 43
      */ //TODO
38 44
     public StreamFilter(List<Person> people, Character startingCharacter) {
39
-        this(Stream.empty(), null);
45
+        personStream = people.stream();
46
+        this.startingCharacter = String.valueOf(startingCharacter);
40 47
     }
41 48
 
42 49
 
@@ -55,7 +62,8 @@ public class StreamFilter {
55 62
      * @return a list of person object whose name starts with `this.startingCharacter`
56 63
      */ //TODO
57 64
     public List<Person> toListMultiLine() {
58
-        return null;
65
+        Predicate<Person> startsWithChar = person -> person.getName().matches("^" + this.startingCharacter);
66
+        return personStream.filter(startsWithChar).collect(Collectors.toList());
59 67
     }
60 68
 
61 69
 
@@ -64,7 +72,7 @@ public class StreamFilter {
64 72
      * @return a list of person objects whose name starts with `this.startingCharacter`
65 73
      */ //TODO
66 74
     public List<Person> toListOneLine() {
67
-        return null;
75
+        return personStream.filter(person -> person.getName().matches("^" + this.startingCharacter)).collect(Collectors.toList());
68 76
     }
69 77
 
70 78
 
@@ -73,7 +81,7 @@ public class StreamFilter {
73 81
      * @return an array of person object whose name starts with `this.startingCharacter`
74 82
      */ //TODO
75 83
     public Person[] toArrayOneLine() {
76
-        return null;
84
+        return personStream.filter(person -> person.getName().matches("^" + this.startingCharacter)).toArray(Person[]::new);
77 85
     }
78 86
 
79 87
 
@@ -82,7 +90,8 @@ public class StreamFilter {
82 90
      * @return an array of person object whose name starts with `this.startingCharacter`
83 91
      */ //TODO
84 92
     public Person[] toArrayMultiLine() {
85
-        return null;
93
+        Predicate<Person> startsWithChar = person -> person.getName().matches("^" + this.startingCharacter);
94
+        return personStream.filter(startsWithChar).toArray(Person[]::new);
86 95
     }
87 96
 
88 97
 }

+ 3
- 3
src/main/java/com/zipcodewilmington/streams/StreamMap.java 查看文件

@@ -18,7 +18,7 @@ public class StreamMap {
18 18
      * @return - a Stream of single characters
19 19
      */ //TODO
20 20
     public static Stream<String> letters(String someWord) {
21
-        return null;
21
+        return Arrays.stream(someWord.split(""));
22 22
     }
23 23
 
24 24
     /**
@@ -26,7 +26,7 @@ public class StreamMap {
26 26
      * @return - a Stream of several Streams of single characters
27 27
      */ //TODO
28 28
     public static Stream<Stream<String>> wordsMap(String... someWords) {
29
-        return null;
29
+        return Arrays.stream(someWords).map(StreamMap::letters);
30 30
     }
31 31
 
32 32
     /**
@@ -34,6 +34,6 @@ public class StreamMap {
34 34
      * @return - a Stream of several Streams of single characters
35 35
      */ //TODO
36 36
     public static Stream<String> wordsFlatMap(String... stringArray) {
37
-        return null;
37
+        return Arrays.stream(stringArray).flatMap(StreamMap::letters);
38 38
     }
39 39
 }

+ 4
- 3
src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java 查看文件

@@ -3,6 +3,7 @@ package com.zipcodewilmington.streams.anthropoid;
3 3
 import com.zipcodewilmington.streams.tools.RandomUtils;
4 4
 import com.zipcodewilmington.streams.tools.StringUtils;
5 5
 
6
+import java.util.ArrayList;
6 7
 import java.util.Date;
7 8
 import java.util.List;
8 9
 import java.util.stream.Collectors;
@@ -39,7 +40,7 @@ public final class PersonFactory {
39 40
      * @return - ArrayList of Person objects
40 41
      */ // TODO
41 42
     public static List<Person> createPersonList(int listSize) {
42
-        return null;
43
+        return createPersonStream(listSize).collect(Collectors.toList());
43 44
     }
44 45
 
45 46
 
@@ -48,7 +49,7 @@ public final class PersonFactory {
48 49
      * @return - Array of Person objects
49 50
      */ // TODO
50 51
     public static Person[] createPersonArray(int arrayLength) {
51
-        return null;
52
+        return createPersonList(arrayLength).toArray(new Person[arrayLength]);
52 53
     }
53 54
 
54 55
 
@@ -58,6 +59,6 @@ public final class PersonFactory {
58 59
      * @return - Stream representation of collection of Person objects
59 60
      */ // TODO
60 61
     public static Stream<Person> createPersonStream(int streamCount) {
61
-        return null;
62
+        return Stream.generate(() -> createRandomPerson()).limit(streamCount);
62 63
     }
63 64
 }

+ 5
- 4
src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java 查看文件

@@ -35,16 +35,17 @@ public final class PersonWarehouse {
35 35
      * @return list of uniquely named Person objects
36 36
      */ //TODO
37 37
     public static Stream<Person> getUniquelyNamedPeople() {
38
-        return null;
38
+        return people.stream().distinct();
39 39
     }
40 40
 
41 41
 
42
+
42 43
     /**
43 44
      * @param character starting character of Person objects' name
44 45
      * @return a Stream of respective
45 46
      */ //TODO
46 47
     public static Stream<Person> getUniquelyNamedPeopleStartingWith(Character character) {
47
-        return null;
48
+        return getUniquelyNamedPeople().filter(person -> person.getName().matches("^"+character));
48 49
     }
49 50
 
50 51
     /**
@@ -52,7 +53,7 @@ public final class PersonWarehouse {
52 53
      * @return a Stream of respective
53 54
      */ //TODO
54 55
     public static Stream<Person> getFirstNUniquelyNamedPeople(int n) {
55
-        return null;
56
+        return getUniquelyNamedPeople().limit(n);
56 57
     }
57 58
 
58 59
     /**
@@ -82,7 +83,7 @@ public final class PersonWarehouse {
82 83
      * @return list of names of Person objects
83 84
      */ // TODO
84 85
     public static List<String> getNames() {
85
-        return null;
86
+        return people.stream().map(person -> person.getName()).collect(Collectors.toList());
86 87
     }
87 88
 
88 89
     /**

+ 5
- 2
src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java 查看文件

@@ -3,8 +3,10 @@ package com.zipcodewilmington.streams.conversions;
3 3
 import com.zipcodewilmington.streams.anthropoid.Person;
4 4
 import com.zipcodewilmington.streams.anthropoid.PersonFactory;
5 5
 
6
+import java.util.ArrayList;
6 7
 import java.util.Arrays;
7 8
 import java.util.List;
9
+import java.util.stream.Collectors;
8 10
 import java.util.stream.Stream;
9 11
 
10 12
 /**
@@ -23,12 +25,13 @@ public final class ArrayConverter extends PersonConversionAgent<Person[]> {
23 25
 
24 26
     //TODO
25 27
     public List<Person> toList() {
26
-        return null;
28
+
29
+        return Arrays.asList(objectSequence);
27 30
     }
28 31
 
29 32
     //TODO
30 33
     public Stream<Person> toStream() {
31
-        return null;
34
+        return Arrays.stream(objectSequence);
32 35
     }
33 36
 
34 37
     @Override

+ 2
- 2
src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java 查看文件

@@ -27,11 +27,11 @@ public final class ListConverter extends PersonConversionAgent<List<Person>> {
27 27
 
28 28
     //TODO
29 29
     public Stream<Person> toStream() {
30
-        return null;
30
+        return objectSequence.stream();
31 31
     }
32 32
 
33 33
     //TODO
34 34
     public Person[] toArray() {
35
-        return null;
35
+        return objectSequence.toArray(new Person[objectSequence.size()]);
36 36
     }
37 37
 }

+ 3
- 3
src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java 查看文件

@@ -25,16 +25,16 @@ public final class StreamConverter extends PersonConversionAgent<Stream<Person>>
25 25
 
26 26
     // TODO
27 27
     public List<Person> toList() {
28
-        return null;
28
+        return personList.stream().collect(Collectors.toList());
29 29
     }
30 30
 
31 31
     // TODO
32 32
     public Stream<Person> toStream() {
33
-        return null;
33
+        return personList.stream();
34 34
     }
35 35
 
36 36
     // TODO
37 37
     public Person[] toArray() {
38
-        return null;
38
+        return personList.stream().toArray(Person[]::new);
39 39
     }
40 40
 }

+ 850394
- 6
target/PersonWarehouse.leonlog
文件差异内容过多而无法显示
查看文件


二进制
target/classes/com/zipcodewilmington/streams/StreamFilter.class 查看文件


二进制
target/classes/com/zipcodewilmington/streams/StreamMap.class 查看文件


二进制
target/classes/com/zipcodewilmington/streams/anthropoid/PersonFactory.class 查看文件


二进制
target/classes/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.class 查看文件


二进制
target/classes/com/zipcodewilmington/streams/conversions/ArrayConverter.class 查看文件


二进制
target/classes/com/zipcodewilmington/streams/conversions/ListConverter.class 查看文件


二进制
target/classes/com/zipcodewilmington/streams/conversions/StreamConverter.class 查看文件


+ 1
- 1
target/global.leonlog 查看文件

@@ -1,2 +1,2 @@
1
-May 31, 2017 4:45:59 PM com.zipcodewilmington.streams.tools.logging.LoggerHandler log
1
+Jun 28, 2018 5:09:36 PM com.zipcodewilmington.streams.tools.logging.LoggerHandler log
2 2
 INFO: Instantiating logger for [ com.zipcodewilmington.streams.anthropoid.PersonWarehouse ] ... 

二进制
target/test-classes/com/zipcodewilmington/streams/TestStreamMap.class 查看文件