From 32d3a05fecef3e82890d2f8b4c36cba4a132e1cd Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Mon, 26 Jul 2021 16:42:57 -0400 Subject: [PATCH 1/5] Stopping point for quiz 3 --- looptest.iml | 8 ++++---- .../zipcodewilmington/streams/StreamMap.java | 2 +- .../streams/anthropoid/PersonFactory.java | 16 ++++++++++++--- .../streams/anthropoid/PersonWarehouse.java | 20 +++++++++++++------ 4 files changed, 32 insertions(+), 14 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 diff --git a/src/main/java/com/zipcodewilmington/streams/StreamMap.java b/src/main/java/com/zipcodewilmington/streams/StreamMap.java index cf35024..457f1fe 100644 --- a/src/main/java/com/zipcodewilmington/streams/StreamMap.java +++ b/src/main/java/com/zipcodewilmington/streams/StreamMap.java @@ -18,7 +18,7 @@ public class StreamMap { * @return - a Stream of single characters */ //TODO public static Stream letters(String someWord) { - return null; + return Stream.of(someWord); } /** diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java index a10ec7b..1ddd50f 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java @@ -3,6 +3,8 @@ import com.zipcodewilmington.streams.tools.RandomUtils; import com.zipcodewilmington.streams.tools.StringUtils; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -39,7 +41,10 @@ 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()); } @@ -48,7 +53,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) + .collect(Collectors.toList()).toArray(new Person[0]); } @@ -59,6 +67,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..8f5b6c1 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -4,10 +4,7 @@ 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.stream.Collectors; import java.util.stream.Stream; @@ -36,7 +33,10 @@ public void addPerson(Person person) { * @return list of names of Person objects */ // TODO public List getNames() { - return null; + return people + .stream() + .map(Person::getName) + .collect(Collectors.toList()); } @@ -44,6 +44,9 @@ public List getNames() { * @return list of uniquely named Person objects */ //TODO public Stream getUniquelyNamedPeople() { +// Stream result = people.stream() +// .distinct() +// .map(Person::getName); return null; } @@ -84,7 +87,12 @@ public Stream> getNestedAliases() { * @return Stream of all Aliases */ // TODO public Stream getAllAliases() { - return null; + Stream jawn = (Stream) people.stream() + .map(Person::getAliases) + .collect(Collectors.toList()); +// Stream jawne= Stream.of(people) +// .map(Person::getAliases) + return jawn; } // DO NOT MODIFY From f99a0eec949c2d0c67087b82eb89df8cc001a89a Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Tue, 27 Jul 2021 19:24:35 -0400 Subject: [PATCH 2/5] stopping point, this ish difficult --- .../streams/anthropoid/PersonWarehouse.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index 8f5b6c1..8bd3f22 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -44,10 +44,20 @@ public List getNames() { * @return list of uniquely named Person objects */ //TODO public Stream getUniquelyNamedPeople() { -// Stream result = people.stream() -// .distinct() -// .map(Person::getName); - return null; + List namesList = getNames() + .stream() + .distinct() + .collect(Collectors.toList()); + List uniquelyNamePeople = new ArrayList<>(); + + people.stream() + .forEach(person ->{ + if(namesList.contains(person.getName())){ + uniquelyNamePeople.add(person); + } + }); + Stream resultStream = uniquelyNamePeople.stream(); + return resultStream; } From 206d3ddd2c29afcd43d1d6aea85ffd009af174a6 Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Wed, 28 Jul 2021 17:32:31 -0400 Subject: [PATCH 3/5] failure on testConversionAgent, not allowed to alter test - it requires a nullary contructor --- .../streams/StreamFilter.java | 27 +++++++++++++------ .../streams/anthropoid/PersonWarehouse.java | 20 +++++++------- .../streams/conversions/ArrayConverter.java | 4 +-- .../streams/conversions/ListConverter.java | 4 +-- .../streams/conversions/StreamConverter.java | 6 ++--- 5 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/StreamFilter.java b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java index d8b89ae..7130c96 100644 --- a/src/main/java/com/zipcodewilmington/streams/StreamFilter.java +++ b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java @@ -5,6 +5,9 @@ import com.zipcodewilmington.streams.tools.RandomUtils; import com.zipcodewilmington.streams.tools.StringUtils; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -20,7 +23,13 @@ public class StreamFilter { * No arg constructor */ //TODO - construct person stream of 100 person objects; startingCharacter is a random capital letter public StreamFilter() { - this(Stream.empty(), null); + PersonFactory pf = new PersonFactory(); + List personList = new ArrayList<>(); + Collections.nCopies(100, 1) + .stream() + .forEach(i -> personList.add(pf.createRandomPerson())); + personStream = personList.stream(); + startingCharacter = RandomUtils.createCharacter('A', 'Z').toString(); } /** @@ -28,7 +37,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 +45,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 +64,8 @@ public StreamFilter(Stream people, Character startingCharacter) { * @return a list of person object whose name starts with `this.startingCharacter` */ //TODO public List toListMultiLine() { - return null; + return personStream.filter(person -> startingCharacter.equals(person.getName().charAt(0))) + .collect(Collectors.toList()); } @@ -64,7 +74,7 @@ public List toListMultiLine() { * @return a list of person objects whose name starts with `this.startingCharacter` */ //TODO public List toListOneLine() { - return null; + return toListMultiLine(); } @@ -73,7 +83,8 @@ public List toListOneLine() { * @return an array of person object whose name starts with `this.startingCharacter` */ //TODO public Person[] toArrayOneLine() { - return null; + return personStream.filter(person -> startingCharacter.equals(person.getName().charAt(0))) + .toArray(Person[]::new); } @@ -82,7 +93,7 @@ public Person[] toArrayOneLine() { * @return an array of person object whose name starts with `this.startingCharacter` */ //TODO public Person[] toArrayMultiLine() { - return null; + return personStream.filter(person -> startingCharacter.equals(person.getName().charAt(0))) + .toArray(Person[]::new); } - } diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index 8bd3f22..cd894db 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -54,6 +54,7 @@ public Stream getUniquelyNamedPeople() { .forEach(person ->{ if(namesList.contains(person.getName())){ uniquelyNamePeople.add(person); + namesList.remove(person.getName()); } }); Stream resultStream = uniquelyNamePeople.stream(); @@ -66,7 +67,8 @@ public Stream getUniquelyNamedPeople() { * @return a Stream of respective */ //TODO public Stream getUniquelyNamedPeopleStartingWith(Character character) { - return null; + // maybe this work? + return getUniquelyNamedPeople().filter(x -> x.getName().charAt(0) == character); } /** @@ -74,14 +76,15 @@ public Stream getUniquelyNamedPeopleStartingWith(Character character) { * @return a Stream of respective */ //TODO public Stream getFirstNUniquelyNamedPeople(int n) { - return null; + return getUniquelyNamedPeople().limit(n); } /** * @return a mapping of Person Id to the respective Person name */ // TODO public Map getIdToNameMap() { - return null; + return people.stream() + .collect(Collectors.toMap(Person::getPersonalId, Person::getName)); } @@ -89,7 +92,7 @@ public Map getIdToNameMap() { * @return Stream of Stream of Aliases */ // TODO public Stream> getNestedAliases() { - return null; + return Stream.of(getAllAliases()); } @@ -97,12 +100,9 @@ public Stream> getNestedAliases() { * @return Stream of all Aliases */ // TODO public Stream getAllAliases() { - Stream jawn = (Stream) people.stream() - .map(Person::getAliases) - .collect(Collectors.toList()); -// Stream jawne= Stream.of(people) -// .map(Person::getAliases) - return jawn; + return people.stream() + .flatMap(p -> Arrays.stream(p.getAliases())) + .collect(Collectors.toList()).stream(); } // DO NOT MODIFY diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java index 0a9d4d8..275de36 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java @@ -25,12 +25,12 @@ public ArrayConverter(int collectionSize) { //TODO public List toList() { - return null; + return Arrays.asList(objectSequence); } //TODO public Stream toStream() { - return null; + return Stream.of(objectSequence); } @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..5a6a552 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java @@ -29,11 +29,11 @@ public List toList() { //TODO public Stream toStream() { - return null; + return objectSequence.stream(); } //TODO public Person[] toArray() { - return null; + return objectSequence.toArray(new Person[0]); } } diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java index 159d048..d651b13 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java @@ -25,16 +25,16 @@ public StreamConverter(int collectionSize) { // TODO public List toList() { - return null; + return personList; } // TODO public Stream toStream() { - return null; + return personList.stream(); } // TODO public Person[] toArray() { - return null; + return personList.toArray(new Person[0]); } } From ca630be9f1d1275a0cffa08a48f1f2be52c2eebf Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Wed, 28 Jul 2021 18:57:13 -0400 Subject: [PATCH 4/5] Finished the map portion, still having the failure on testConversionAgent --- src/main/java/com/zipcodewilmington/streams/StreamMap.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/StreamMap.java b/src/main/java/com/zipcodewilmington/streams/StreamMap.java index 457f1fe..1fe7aaa 100644 --- a/src/main/java/com/zipcodewilmington/streams/StreamMap.java +++ b/src/main/java/com/zipcodewilmington/streams/StreamMap.java @@ -26,7 +26,8 @@ public static Stream letters(String someWord) { * @return - a Stream of several Streams of single characters */ //TODO public static Stream> wordsMap(String... someWords) { - return null; + return Stream.of(someWords) + .map(word -> Arrays.stream(someWords)); } /** @@ -34,6 +35,7 @@ public static Stream> wordsMap(String... someWords) { * @return - a Stream of several Streams of single characters */ //TODO public static Stream wordsFlatMap(String... stringArray) { - return null; + return Stream.of(stringArray) + .flatMap(word -> Arrays.stream(stringArray)); } } \ No newline at end of file From edef32e4ef74a3fda1b51a5ff632e98626172890 Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Wed, 28 Jul 2021 20:51:48 -0400 Subject: [PATCH 5/5] lab --- .../zipcodewilmington/streams/anthropoid/PersonWarehouse.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index cd894db..984add7 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -101,8 +101,7 @@ public Stream> getNestedAliases() { */ // TODO public Stream getAllAliases() { return people.stream() - .flatMap(p -> Arrays.stream(p.getAliases())) - .collect(Collectors.toList()).stream(); + .flatMap(p -> Arrays.stream(p.getAliases())); } // DO NOT MODIFY