Vincent Sima 6 years ago
parent
commit
dd4ed5915c

+ 297
- 842
.idea/workspace.xml
File diff suppressed because it is too large
View File


+ 20
- 7
src/main/java/com/zipcodewilmington/streams/StreamFilter.java View File

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

+ 3
- 3
src/main/java/com/zipcodewilmington/streams/StreamMap.java View File

@@ -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
 }

+ 14
- 12
src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java View File

@@ -3,23 +3,15 @@ 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;
9 10
 import java.util.stream.Stream;
10
-
11
-/**
12
- * Created by leon on 5/1/17.
13
- * @ATTENTION_TO_STUDENTS You are FORBIDDEN from using loops of any sort within the definition of this class.
14
- */
15 11
 public final class PersonFactory {
16 12
     private PersonFactory() {
17
-        /** this class is not to be instantiated */
18 13
     }
19 14
 
20
-    /**
21
-     * @return a new instance of a person with fields of random values
22
-     */
23 15
     public static Person createRandomPerson() {
24 16
         String name = StringUtils.capitalizeFirstChar(RandomUtils.createString('a', 'z', 4));
25 17
         String[] aliases = RandomUtils.createStrings('a', 'z', 5, 5);
@@ -39,7 +31,13 @@ public final class PersonFactory {
39 31
      * @return - ArrayList of Person objects
40 32
      */ // TODO
41 33
     public static List<Person> createPersonList(int listSize) {
42
-        return null;
34
+
35
+        Stream<Person> persons = Stream.generate(() ->
36
+                createRandomPerson()).limit(listSize);
37
+        return persons.collect(Collectors.toList());
38
+
39
+
40
+
43 41
     }
44 42
 
45 43
 
@@ -48,7 +46,10 @@ public final class PersonFactory {
48 46
      * @return - Array of Person objects
49 47
      */ // TODO
50 48
     public static Person[] createPersonArray(int arrayLength) {
51
-        return null;
49
+        Stream<Person> persons = Stream.generate(() ->
50
+                createRandomPerson()).limit(arrayLength);
51
+
52
+        return persons.toArray(size -> new Person[size]);
52 53
     }
53 54
 
54 55
 
@@ -58,6 +59,7 @@ 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(() ->
63
+                createRandomPerson()).limit(streamCount);
62 64
     }
63 65
 }

+ 8
- 7
src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java View File

@@ -7,6 +7,7 @@ import com.zipcodewilmington.streams.tools.logging.LoggerWarehouse;
7 7
 import java.util.ArrayList;
8 8
 import java.util.List;
9 9
 import java.util.Map;
10
+import java.util.stream.Collector;
10 11
 import java.util.stream.Collectors;
11 12
 import java.util.stream.Stream;
12 13
 
@@ -35,7 +36,7 @@ public final class PersonWarehouse {
35 36
      * @return list of uniquely named Person objects
36 37
      */ //TODO
37 38
     public static Stream<Person> getUniquelyNamedPeople() {
38
-        return null;
39
+        return people.stream().distinct();
39 40
     }
40 41
 
41 42
 
@@ -44,7 +45,7 @@ public final class PersonWarehouse {
44 45
      * @return a Stream of respective
45 46
      */ //TODO
46 47
     public static Stream<Person> getUniquelyNamedPeopleStartingWith(Character character) {
47
-        return null;
48
+        return people.stream().filter(person -> person.getName().startsWith(character.toString())).distinct();
48 49
     }
49 50
 
50 51
     /**
@@ -52,14 +53,14 @@ 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 people.stream().distinct().limit(n);
56 57
     }
57 58
 
58 59
     /**
59 60
      * @return a mapping of Person Id to the respective Person name
60 61
      */ // TODO
61 62
     public static Map<Long, String> getIdToNameMap() {
62
-        return null;
63
+        return people.stream().collect(Collectors.toMap(Person::getPersonalId, Person::getName));
63 64
     }
64 65
 
65 66
 
@@ -67,7 +68,7 @@ public final class PersonWarehouse {
67 68
      * @return Stream of Stream of Aliases
68 69
      */ // TODO
69 70
     public static Stream<Stream<String>> getNestedAliases() {
70
-        return null;
71
+        return people.stream().map(person -> Stream.of(person.getAliases()));
71 72
     }
72 73
 
73 74
 
@@ -75,14 +76,14 @@ public final class PersonWarehouse {
75 76
      * @return Stream of all Aliases
76 77
      */ // TODO
77 78
     public static Stream<String> getAllAliases() {
78
-        return null;
79
+        return people.stream().map(person -> person.getAliases().toString());
79 80
     }
80 81
 
81 82
     /**
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
     /**

+ 2
- 2
src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java View File

@@ -23,12 +23,12 @@ public final class ArrayConverter extends PersonConversionAgent<Person[]> {
23 23
 
24 24
     //TODO
25 25
     public List<Person> toList() {
26
-        return null;
26
+        return Arrays.asList(toArray());
27 27
     }
28 28
 
29 29
     //TODO
30 30
     public Stream<Person> toStream() {
31
-        return null;
31
+        return Arrays.stream(toArray());
32 32
     }
33 33
 
34 34
     @Override

+ 3
- 2
src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java View File

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

+ 5
- 3
src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java View File

@@ -3,6 +3,7 @@ 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.Arrays;
6 7
 import java.util.List;
7 8
 import java.util.stream.Collectors;
8 9
 import java.util.stream.Stream;
@@ -25,16 +26,17 @@ public final class StreamConverter extends PersonConversionAgent<Stream<Person>>
25 26
 
26 27
     // TODO
27 28
     public List<Person> toList() {
28
-        return null;
29
+        return toStream().collect(Collectors.toList());
29 30
     }
30 31
 
31 32
     // TODO
32 33
     public Stream<Person> toStream() {
33
-        return null;
34
+        return Arrays.stream(toArray());
34 35
     }
35 36
 
36 37
     // TODO
37 38
     public Person[] toArray() {
38
-        return null;
39
+        return personList.stream().toArray(Person[]::new);
40
+
39 41
     }
40 42
 }

+ 430785
- 5
target/PersonWarehouse.leonlog
File diff suppressed because it is too large
View File


BIN
target/classes/com/zipcodewilmington/streams/StreamFilter.class View File


BIN
target/classes/com/zipcodewilmington/streams/StreamMap.class View File


BIN
target/classes/com/zipcodewilmington/streams/anthropoid/PersonFactory.class View File


BIN
target/classes/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.class View File


BIN
target/classes/com/zipcodewilmington/streams/conversions/ArrayConverter.class View File


BIN
target/classes/com/zipcodewilmington/streams/conversions/ListConverter.class View File


BIN
target/classes/com/zipcodewilmington/streams/conversions/StreamConverter.class View File


+ 1
- 1
target/global.leonlog View File

@@ -1,2 +1,2 @@
1
-May 31, 2017 4:45:59 PM com.zipcodewilmington.streams.tools.logging.LoggerHandler log
1
+Jul 05, 2018 1:42:48 PM com.zipcodewilmington.streams.tools.logging.LoggerHandler log
2 2
 INFO: Instantiating logger for [ com.zipcodewilmington.streams.anthropoid.PersonWarehouse ] ... 

BIN
target/test-classes/com/zipcodewilmington/streams/TestStreamMap.class View File