From 2ff834c61afb6c1434b0a3937fb7677fc053426e Mon Sep 17 00:00:00 2001 From: jgiroso Date: Mon, 26 Jul 2021 12:31:26 -0400 Subject: [PATCH 1/8] about to start --- looptest.iml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/looptest.iml b/looptest.iml index 7f2d304..e34277e 100644 --- a/looptest.iml +++ b/looptest.iml @@ -10,10 +10,10 @@ - + - - - + + + \ No newline at end of file From e201ba4582eff96fdb332834fde559f9faf48ba1 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Mon, 26 Jul 2021 14:08:32 -0400 Subject: [PATCH 2/8] Person Factory passed --- .../streams/anthropoid/PersonFactory.java | 22 ++++++++++++++----- .../streams/anthropoid/PersonWarehouse.java | 1 + 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java index a10ec7b..ad06851 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java @@ -3,8 +3,7 @@ import com.zipcodewilmington.streams.tools.RandomUtils; import com.zipcodewilmington.streams.tools.StringUtils; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -39,7 +38,15 @@ public Person createRandomPerson() { * @return - ArrayList of Person objects */ // TODO public List createPersonList(int listSize) { - return null; + return Stream + .generate(this::createRandomPerson) + .limit(listSize) + .collect(Collectors.toList()); +// List list = new ArrayList<>(); +// Collections.nCopies(listSize, 1) +// .stream() +// .forEach(i -> list.add(createRandomPerson())); //close stream - terminal operation +// return list; } @@ -48,7 +55,10 @@ public List createPersonList(int listSize) { * @return - Array of Person objects */ // TODO public Person[] createPersonArray(int arrayLength) { - return null; + return Stream + .generate(this::createRandomPerson) + .limit(arrayLength) + .toArray(Person[]::new); } @@ -59,6 +69,8 @@ public Person[] createPersonArray(int arrayLength) { * @return - Stream representation of collection of Person objects */ // TODO public Stream createPersonStream(int streamCount) { - return null; + return Stream + .generate(this::createRandomPerson) + .limit(streamCount); } } diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index a4960b1..202c934 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -44,6 +44,7 @@ public List getNames() { * @return list of uniquely named Person objects */ //TODO public Stream getUniquelyNamedPeople() { + //google distinct return null; } From 4e1515f2492a85e32a3b1086b1ab1232d0776c1c Mon Sep 17 00:00:00 2001 From: jgiroso Date: Mon, 26 Jul 2021 14:20:09 -0400 Subject: [PATCH 3/8] adjusted the return statement --- .../streams/anthropoid/PersonFactory.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java index ad06851..6df2ac8 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java @@ -38,10 +38,11 @@ public Person createRandomPerson() { * @return - ArrayList of Person objects */ // TODO public List createPersonList(int listSize) { - return Stream + List newPersonList = Stream .generate(this::createRandomPerson) .limit(listSize) .collect(Collectors.toList()); + return newPersonList; // List list = new ArrayList<>(); // Collections.nCopies(listSize, 1) // .stream() @@ -55,10 +56,11 @@ public List createPersonList(int listSize) { * @return - Array of Person objects */ // TODO public Person[] createPersonArray(int arrayLength) { - return Stream + Person[] newPersonArray = Stream .generate(this::createRandomPerson) .limit(arrayLength) .toArray(Person[]::new); + return newPersonArray; } @@ -69,8 +71,9 @@ public Person[] createPersonArray(int arrayLength) { * @return - Stream representation of collection of Person objects */ // TODO public Stream createPersonStream(int streamCount) { - return Stream + Stream newStream = Stream .generate(this::createRandomPerson) .limit(streamCount); + return newStream; } } From 5042eeddcf592e76dc9bf0cf6dfa567b8e087238 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Tue, 27 Jul 2021 20:38:36 -0400 Subject: [PATCH 4/8] personWareHouse complete --- .../streams/anthropoid/PersonWarehouse.java | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index 202c934..4ce3b43 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -4,10 +4,8 @@ import com.zipcodewilmington.streams.tools.logging.LoggerHandler; import com.zipcodewilmington.streams.tools.logging.LoggerWarehouse; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -36,7 +34,10 @@ public void addPerson(Person person) { * @return list of names of Person objects */ // TODO public List getNames() { - return null; + List names = people.stream() + .map(Person::getName) + .collect(Collectors.toList()); + return names; } @@ -45,7 +46,21 @@ public List getNames() { */ //TODO public Stream getUniquelyNamedPeople() { //google distinct - return null; + List namesList = getNames() + .stream() + .distinct() + .collect(Collectors.toList()); + List uniquelyNamedPeople = new ArrayList<>(); + + people.stream() + .forEach(person -> { + if(namesList.contains(person.getName())){ + uniquelyNamedPeople.add(person); + namesList.remove(person.getName()); + } + }); + Stream resultStream = uniquelyNamedPeople.stream(); + return resultStream; } @@ -54,7 +69,9 @@ public Stream getUniquelyNamedPeople() { * @return a Stream of respective */ //TODO public Stream getUniquelyNamedPeopleStartingWith(Character character) { - return null; + Stream peopleStartingWithC = getUniquelyNamedPeople() + .filter(person -> person.getName().charAt(0) == character); + return peopleStartingWithC; } /** @@ -62,14 +79,18 @@ public Stream getUniquelyNamedPeopleStartingWith(Character character) { * @return a Stream of respective */ //TODO public Stream getFirstNUniquelyNamedPeople(int n) { - return null; + Stream firstUniquelyNamedPeople = getUniquelyNamedPeople() + .limit(n); + return firstUniquelyNamedPeople; } /** * @return a mapping of Person Id to the respective Person name */ // TODO public Map getIdToNameMap() { - return null; + Map idToNameMap = people.stream() + .collect(Collectors.toMap(Person::getPersonalId, Person::getName)); + return idToNameMap; } @@ -77,6 +98,7 @@ public Map getIdToNameMap() { * @return Stream of Stream of Aliases */ // TODO public Stream> getNestedAliases() { + return null; } @@ -85,6 +107,7 @@ public Stream> getNestedAliases() { * @return Stream of all Aliases */ // TODO public Stream getAllAliases() { + return null; } From f9d5867cd0575c4953f160ddfbef5f81ef5b4b4c Mon Sep 17 00:00:00 2001 From: jgiroso Date: Tue, 27 Jul 2021 20:52:26 -0400 Subject: [PATCH 5/8] Array and List converter complete --- .../streams/conversions/ArrayConverter.java | 8 ++++++-- .../streams/conversions/ListConverter.java | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java index 0a9d4d8..bee25cf 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java @@ -2,6 +2,7 @@ import com.zipcodewilmington.streams.anthropoid.Person; import com.zipcodewilmington.streams.anthropoid.PersonFactory; +import com.zipcodewilmington.streams.anthropoid.PersonWarehouse; import java.util.Arrays; import java.util.List; @@ -25,12 +26,15 @@ public ArrayConverter(int collectionSize) { //TODO public List toList() { - return null; + List list = Arrays.stream(this.objectSequence) + .collect(Collectors.toList()); + return list; } //TODO public Stream toStream() { - return null; + Stream stream = Arrays.stream(this.objectSequence); + return stream; } @Override diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java index b64540b..167f1a9 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java @@ -29,11 +29,13 @@ public List toList() { //TODO public Stream toStream() { - return null; + Stream stream = this.objectSequence.stream(); + return stream; } //TODO public Person[] toArray() { - return null; + Person[] array = this.objectSequence.toArray(new Person[0]); + return array; } } From 539d0b733d7f46f6eb0ae4f61f393fc7e7326f7e Mon Sep 17 00:00:00 2001 From: jgiroso Date: Tue, 27 Jul 2021 20:55:59 -0400 Subject: [PATCH 6/8] stuff is done --- .../streams/conversions/StreamConverter.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java index 159d048..ab1f3d2 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java @@ -25,16 +25,18 @@ public StreamConverter(int collectionSize) { // TODO public List toList() { - return null; + return personList; } // TODO public Stream toStream() { - return null; + Stream stream = personList.stream(); + return stream; } // TODO public Person[] toArray() { - return null; + Person[] array = personList.toArray(new Person[0]); + return array; } } From 6ee74496213d549686744b0c81e71401eb70193c Mon Sep 17 00:00:00 2001 From: jgiroso Date: Wed, 28 Jul 2021 17:04:10 -0400 Subject: [PATCH 7/8] StreamFilter complete --- .../streams/StreamFilter.java | 29 ++++++++++++++----- .../streams/anthropoid/PersonWarehouse.java | 26 +++++++++++++---- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/StreamFilter.java b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java index d8b89ae..ece93e2 100644 --- a/src/main/java/com/zipcodewilmington/streams/StreamFilter.java +++ b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java @@ -5,6 +5,7 @@ import com.zipcodewilmington.streams.tools.RandomUtils; import com.zipcodewilmington.streams.tools.StringUtils; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -16,11 +17,13 @@ public class StreamFilter { private final Stream personStream; public final String startingCharacter; + + /** * No arg constructor */ //TODO - construct person stream of 100 person objects; startingCharacter is a random capital letter public StreamFilter() { - this(Stream.empty(), null); + this(new PersonFactory().createPersonStream(100), RandomUtils.createCharacter('A', 'Z')); } /** @@ -28,7 +31,7 @@ public StreamFilter() { * @param startingCharacter - character to filter by */ //TODO public StreamFilter(Person[] people, Character startingCharacter) { - this(Stream.empty(), null); + this(Arrays.stream(people), startingCharacter); } /** @@ -36,7 +39,7 @@ public StreamFilter(Person[] people, Character startingCharacter) { * @param startingCharacter - character to filter by */ //TODO public StreamFilter(List people, Character startingCharacter) { - this(Stream.empty(), null); + this(people.stream(), startingCharacter); } @@ -55,7 +58,10 @@ public StreamFilter(Stream people, Character startingCharacter) { * @return a list of person object whose name starts with `this.startingCharacter` */ //TODO public List toListMultiLine() { - return null; + List listMultiLine = personStream + .filter(person -> startingCharacter.equals(person.getName().charAt(0))) + .collect(Collectors.toList()); + return listMultiLine; } @@ -64,7 +70,10 @@ public List toListMultiLine() { * @return a list of person objects whose name starts with `this.startingCharacter` */ //TODO public List toListOneLine() { - return null; + List listOneLine = personStream + .filter(person -> startingCharacter.equals(person.getName().charAt(0))) + .collect(Collectors.toList()); + return listOneLine; } @@ -73,7 +82,10 @@ public List toListOneLine() { * @return an array of person object whose name starts with `this.startingCharacter` */ //TODO public Person[] toArrayOneLine() { - return null; + Person[] arrayOneLine = personStream + .filter(person -> startingCharacter.equals(person.getName().charAt(0))) + .toArray(Person[]::new); + return arrayOneLine; } @@ -82,7 +94,10 @@ public Person[] toArrayOneLine() { * @return an array of person object whose name starts with `this.startingCharacter` */ //TODO public Person[] toArrayMultiLine() { - return null; + Person[] arrayOneLine = personStream + .filter(person -> startingCharacter.equals(person.getName().charAt(0))) + .toArray(Person[]::new); + return arrayOneLine; } } diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index 4ce3b43..0369799 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -5,6 +5,7 @@ import com.zipcodewilmington.streams.tools.logging.LoggerWarehouse; import java.util.*; +import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -45,6 +46,13 @@ public List getNames() { * @return list of uniquely named Person objects */ //TODO public Stream getUniquelyNamedPeople() { +// List names = getNames().stream().distinct().collect(Collectors.toList()); +// Predicate matchNames = val -> names.contains(val.getName()); +// Stream uniquePersons = people +// .stream() +// .filter(matchNames); +// return uniquePersons; + //google distinct List namesList = getNames() .stream() @@ -59,8 +67,8 @@ public Stream getUniquelyNamedPeople() { namesList.remove(person.getName()); } }); - Stream resultStream = uniquelyNamedPeople.stream(); - return resultStream; + Stream result = uniquelyNamedPeople.stream(); + return result; } @@ -88,7 +96,8 @@ public Stream getFirstNUniquelyNamedPeople(int n) { * @return a mapping of Person Id to the respective Person name */ // TODO public Map getIdToNameMap() { - Map idToNameMap = people.stream() + Map idToNameMap = people + .stream() .collect(Collectors.toMap(Person::getPersonalId, Person::getName)); return idToNameMap; } @@ -98,8 +107,10 @@ public Map getIdToNameMap() { * @return Stream of Stream of Aliases */ // TODO public Stream> getNestedAliases() { - - return null; + Stream> nestedAliases = people + .stream() + .map(val -> Arrays.stream(val.getAliases())); + return nestedAliases; } @@ -107,8 +118,11 @@ public Stream> getNestedAliases() { * @return Stream of all Aliases */ // TODO public Stream getAllAliases() { + Stream allAliases = people + .stream() + .flatMap(val -> Arrays.stream(val.getAliases())); - return null; + return allAliases; } // DO NOT MODIFY From f759163ccb59336cbceb74565b8dbe1e53eff232 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Wed, 28 Jul 2021 19:19:09 -0400 Subject: [PATCH 8/8] lab complete --- .../com/zipcodewilmington/streams/StreamMap.java | 13 ++++++++++--- .../streams/anthropoid/PersonWarehouse.java | 6 +----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/StreamMap.java b/src/main/java/com/zipcodewilmington/streams/StreamMap.java index cf35024..17fc150 100644 --- a/src/main/java/com/zipcodewilmington/streams/StreamMap.java +++ b/src/main/java/com/zipcodewilmington/streams/StreamMap.java @@ -18,7 +18,10 @@ public class StreamMap { * @return - a Stream of single characters */ //TODO public static Stream letters(String someWord) { - return null; + Stream lettersList = someWord + .codePoints() + .mapToObj(c -> String.valueOf(c)); + return lettersList; } /** @@ -26,7 +29,9 @@ public static Stream letters(String someWord) { * @return - a Stream of several Streams of single characters */ //TODO public static Stream> wordsMap(String... someWords) { - return null; + Stream> wordsMapStream = Arrays.stream(someWords) + .map(word -> letters(word)); + return wordsMapStream; } /** @@ -34,6 +39,8 @@ public static Stream> wordsMap(String... someWords) { * @return - a Stream of several Streams of single characters */ //TODO public static Stream wordsFlatMap(String... stringArray) { - return null; + Stream wordsFlatMapStream = Arrays.stream(stringArray) + .flatMap(word -> letters(word)); + return wordsFlatMapStream; } } \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index 0369799..9562342 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -107,10 +107,7 @@ public Map getIdToNameMap() { * @return Stream of Stream of Aliases */ // TODO public Stream> getNestedAliases() { - Stream> nestedAliases = people - .stream() - .map(val -> Arrays.stream(val.getAliases())); - return nestedAliases; + return Stream.of(getAllAliases()); } @@ -121,7 +118,6 @@ public Stream getAllAliases() { Stream allAliases = people .stream() .flatMap(val -> Arrays.stream(val.getAliases())); - return allAliases; }