#25 completed file

Offen
ElliottStansbury möchte 1 Commits von ElliottStansbury/CR-MicroLabs-Streams-And-Lambdas:master nach master zusammenführen

+ 2
- 1
.idea/compiler.xml Datei anzeigen

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

+ 519
- 929
.idea/workspace.xml
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 12
- 0
pom.xml Datei anzeigen

@@ -7,6 +7,18 @@
7 7
     <groupId>mygroupid</groupId>
8 8
     <artifactId>looptest</artifactId>
9 9
     <version>1.0-SNAPSHOT</version>
10
+    <build>
11
+        <plugins>
12
+            <plugin>
13
+                <groupId>org.apache.maven.plugins</groupId>
14
+                <artifactId>maven-compiler-plugin</artifactId>
15
+                <configuration>
16
+                    <source>8</source>
17
+                    <target>8</target>
18
+                </configuration>
19
+            </plugin>
20
+        </plugins>
21
+    </build>
10 22
     <dependencies>
11 23
         <dependency>
12 24
             <groupId>junit</groupId>

+ 7
- 7
src/main/java/com/zipcodewilmington/streams/StreamFilter.java Datei anzeigen

@@ -20,7 +20,7 @@ public class StreamFilter {
20 20
      * No arg constructor
21 21
      */ //TODO - construct person stream of 100 person objects; startingCharacter is a random capital letter
22 22
     public StreamFilter() {
23
-        this(Stream.empty(), null);
23
+        this(PersonFactory.createPersonStream(100), RandomUtils.createCharacter('A','Z'));
24 24
     }
25 25
 
26 26
     /**
@@ -28,7 +28,7 @@ public class StreamFilter {
28 28
      * @param startingCharacter - character to filter by
29 29
      */ //TODO
30 30
     public StreamFilter(Person[] people, Character startingCharacter) {
31
-        this(Stream.empty(), null);
31
+        this(Stream.of(people), startingCharacter);
32 32
     }
33 33
 
34 34
     /**
@@ -36,7 +36,7 @@ public class StreamFilter {
36 36
      * @param startingCharacter - character to filter by
37 37
      */ //TODO
38 38
     public StreamFilter(List<Person> people, Character startingCharacter) {
39
-        this(Stream.empty(), null);
39
+        this(people.stream(), startingCharacter);
40 40
     }
41 41
 
42 42
 
@@ -55,7 +55,7 @@ public class StreamFilter {
55 55
      * @return a list of person object whose name starts with `this.startingCharacter`
56 56
      */ //TODO
57 57
     public List<Person> toListMultiLine() {
58
-        return null;
58
+        return personStream.filter(person->person.getName().equalsIgnoreCase(startingCharacter)).collect(Collectors.toList());
59 59
     }
60 60
 
61 61
 
@@ -64,7 +64,7 @@ public class StreamFilter {
64 64
      * @return a list of person objects whose name starts with `this.startingCharacter`
65 65
      */ //TODO
66 66
     public List<Person> toListOneLine() {
67
-        return null;
67
+        return personStream.filter(person -> StringUtils.isPalindromeIgnoreCase(person.name)).collect(Collectors.toList());
68 68
     }
69 69
 
70 70
 
@@ -73,7 +73,7 @@ public class StreamFilter {
73 73
      * @return an array of person object whose name starts with `this.startingCharacter`
74 74
      */ //TODO
75 75
     public Person[] toArrayOneLine() {
76
-        return null;
76
+        return personStream.filter(person -> person.getName().equalsIgnoreCase(startingCharacter)).toArray(Person[]::new);
77 77
     }
78 78
 
79 79
 
@@ -82,7 +82,7 @@ public class StreamFilter {
82 82
      * @return an array of person object whose name starts with `this.startingCharacter`
83 83
      */ //TODO
84 84
     public Person[] toArrayMultiLine() {
85
-        return null;
85
+        return toArrayOneLine();
86 86
     }
87 87
 
88 88
 }

+ 9
- 3
src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java Datei anzeigen

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

+ 21
- 4
src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java Datei anzeigen

@@ -7,6 +7,11 @@ 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.Set;
11
+import java.util.concurrent.ConcurrentHashMap;
12
+import java.util.function.Function;
13
+import java.util.function.Predicate;
14
+import java.util.stream.Collector;
10 15
 import java.util.stream.Collectors;
11 16
 import java.util.stream.Stream;
12 17
 
@@ -31,11 +36,20 @@ public final class PersonWarehouse {
31 36
         people.add(person);
32 37
     }
33 38
 
39
+    public static<T>Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor){
40
+        Set<Object> sen = ConcurrentHashMap.newKeySet();
41
+        return t -> sen.add(keyExtractor.apply(t));
42
+    }
43
+
44
+
45
+
34 46
     /**
35 47
      * @return list of uniquely named Person objects
36 48
      */ //TODO
37 49
     public static Stream<Person> getUniquelyNamedPeople() {
38
-        return null;
50
+//        Stream<String> personNames = people.stream().map(person -> person.getName());
51
+        return people.stream().filter(distinctByKey(Person::getName));
52
+
39 53
     }
40 54
 
41 55
 
@@ -44,7 +58,7 @@ public final class PersonWarehouse {
44 58
      * @return a Stream of respective
45 59
      */ //TODO
46 60
     public static Stream<Person> getUniquelyNamedPeopleStartingWith(Character character) {
47
-        return null;
61
+        return getUniquelyNamedPeople().filter(person -> person.name.charAt(0) == character);
48 62
     }
49 63
 
50 64
     /**
@@ -52,13 +66,16 @@ public final class PersonWarehouse {
52 66
      * @return a Stream of respective
53 67
      */ //TODO
54 68
     public static Stream<Person> getFirstNUniquelyNamedPeople(int n) {
55
-        return null;
69
+        return getUniquelyNamedPeople().limit(n);
56 70
     }
57 71
 
58 72
     /**
59 73
      * @return a mapping of Person Id to the respective Person name
60 74
      */ // TODO
61 75
     public static Map<Long, String> getIdToNameMap() {
76
+
77
+        people.stream().collect(Collectors.toMap(p -> p.getPersonalId(),p -> p.getName()));
78
+
62 79
         return null;
63 80
     }
64 81
 
@@ -82,7 +99,7 @@ public final class PersonWarehouse {
82 99
      * @return list of names of Person objects
83 100
      */ // TODO
84 101
     public static List<String> getNames() {
85
-        return null;
102
+        return people.stream().map(Person::getName).collect(Collectors.toList());
86 103
     }
87 104
 
88 105
     /**

+ 5
- 2
src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java Datei anzeigen

@@ -5,6 +5,7 @@ import com.zipcodewilmington.streams.anthropoid.PersonFactory;
5 5
 
6 6
 import java.util.Arrays;
7 7
 import java.util.List;
8
+import java.util.stream.Collectors;
8 9
 import java.util.stream.Stream;
9 10
 
10 11
 /**
@@ -23,16 +24,18 @@ public final class ArrayConverter extends PersonConversionAgent<Person[]> {
23 24
 
24 25
     //TODO
25 26
     public List<Person> toList() {
26
-        return null;
27
+
28
+        return Arrays.stream(super.objectSequence).collect(Collectors.toList());
27 29
     }
28 30
 
29 31
     //TODO
30 32
     public Stream<Person> toStream() {
31
-        return null;
33
+        return Arrays.stream(super.objectSequence);
32 34
     }
33 35
 
34 36
     @Override
35 37
     public Person[] toArray() {
38
+
36 39
         return super.objectSequence;
37 40
     }
38 41
 }

+ 3
- 2
src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java Datei anzeigen

@@ -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
+
31
+        return super.objectSequence.stream();
31 32
     }
32 33
 
33 34
     //TODO
34 35
     public Person[] toArray() {
35
-        return null;
36
+        return super.objectSequence.stream().toArray(Person[]::new);
36 37
     }
37 38
 }

+ 3
- 3
src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java Datei anzeigen

@@ -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;
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
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


BIN
target/classes/com/zipcodewilmington/streams/StreamFilter.class Datei anzeigen


BIN
target/classes/com/zipcodewilmington/streams/anthropoid/PersonFactory.class Datei anzeigen


BIN
target/classes/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.class Datei anzeigen


BIN
target/classes/com/zipcodewilmington/streams/conversions/ArrayConverter.class Datei anzeigen


BIN
target/classes/com/zipcodewilmington/streams/conversions/ListConverter.class Datei anzeigen


BIN
target/classes/com/zipcodewilmington/streams/conversions/StreamConverter.class Datei anzeigen


+ 1
- 1
target/global.leonlog Datei anzeigen

@@ -1,2 +1,2 @@
1
-May 31, 2017 4:45:59 PM com.zipcodewilmington.streams.tools.logging.LoggerHandler log
1
+Nov 21, 2018 1:13:47 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 Datei anzeigen