From 992c9efe5fdfd37a1384590541ed8febfd1b934e Mon Sep 17 00:00:00 2001 From: MannyMb Date: Thu, 29 Jul 2021 20:11:00 -0400 Subject: [PATCH 1/2] saving point --- looptest.iml | 8 ++++---- .../streams/anthropoid/PersonFactory.java | 15 ++++++++++++--- .../streams/anthropoid/PersonWarehouse.java | 6 +++++- 3 files changed, 21 insertions(+), 8 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/anthropoid/PersonFactory.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java index a10ec7b..2405f7d 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java @@ -3,6 +3,7 @@ import com.zipcodewilmington.streams.tools.RandomUtils; import com.zipcodewilmington.streams.tools.StringUtils; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -39,7 +40,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 +52,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 +66,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..450db2e 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -36,7 +36,9 @@ 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 +46,8 @@ public List getNames() { * @return list of uniquely named Person objects */ //TODO public Stream getUniquelyNamedPeople() { + List personList = people.stream() + .collect(Collectors.groupingBy(); return null; } From 10fac75ada55bb7c2fd83ce3d89c41cd84bbd437 Mon Sep 17 00:00:00 2001 From: MannyMb Date: Sat, 31 Jul 2021 21:25:44 -0400 Subject: [PATCH 2/2] Saving progress --- .../streams/StreamFilter.java | 31 +++++++++--- .../zipcodewilmington/streams/StreamMap.java | 2 +- .../streams/anthropoid/PersonWarehouse.java | 47 +++++++++++++------ .../streams/conversions/ArrayConverter.java | 9 +++- .../streams/conversions/ListConverter.java | 9 +++- .../streams/conversions/StreamConverter.java | 7 +-- 6 files changed, 75 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/StreamFilter.java b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java index d8b89ae..c9c48af 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 factory = new PersonFactory(); + List list = new ArrayList<>(); + Collections.nCopies(100, 1) + .stream() + .forEach(i -> list.add(factory.createRandomPerson())); + personStream = list.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,9 @@ 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 +75,9 @@ public List toListMultiLine() { * @return a list of person objects whose name starts with `this.startingCharacter` */ //TODO public List toListOneLine() { - return null; + return personStream + .filter(person -> startingCharacter.equals(person.getName().charAt(0))) + .collect(Collectors.toList()); } @@ -73,7 +86,9 @@ 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 +97,9 @@ 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/StreamMap.java b/src/main/java/com/zipcodewilmington/streams/StreamMap.java index cf35024..1c69307 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 Arrays.stream((someWord.split(""))); } /** diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index 450db2e..ecb021c 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; @@ -37,7 +34,7 @@ public void addPerson(Person person) { */ // TODO public List getNames() { return people.stream() - .map(Person::getName) + .map(Person::getName) // map is not an actual map .collect(Collectors.toList()); } @@ -46,9 +43,22 @@ public List getNames() { * @return list of uniquely named Person objects */ //TODO public Stream getUniquelyNamedPeople() { - List personList = people.stream() - .collect(Collectors.groupingBy(); - return null; + List namesList = getNames() + .stream() + .distinct() + .collect(Collectors.toList()); + + List uniquelyNamedPeople = new ArrayList<>(); + + this.people + .stream() + .forEach(person -> { // if namesList contains + if(namesList.contains(person.getName())){ // is + uniquelyNamedPeople.add(person); // then add the person object + namesList.remove(person.getName()); // remove from distinct names + } + }); + return uniquelyNamedPeople.stream(); } @@ -57,7 +67,8 @@ public Stream getUniquelyNamedPeople() { * @return a Stream of respective */ //TODO public Stream getUniquelyNamedPeopleStartingWith(Character character) { - return null; + return getUniquelyNamedPeople() + .filter(person -> person.getName().charAt(0) == character); } /** @@ -65,30 +76,36 @@ 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)); } - /** * @return Stream of Stream of Aliases */ // TODO public Stream> getNestedAliases() { - return null; + return Stream.of(getAllAliases()); } /** * @return Stream of all Aliases */ // TODO - public Stream getAllAliases() { - return null; + public Stream getAllAliases() { //stream is of people objects, but the props are arrays. + return people + .stream() + .flatMap(person -> Arrays.stream(person.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..c9e390a 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java @@ -12,6 +12,9 @@ * Created by leon on 5/25/17. */ public final class ArrayConverter extends PersonConversionAgent { + + private Person[] peopleArray = super.objectSequence; + public ArrayConverter(Person... people) { super(people); } @@ -25,12 +28,14 @@ public ArrayConverter(int collectionSize) { //TODO public List toList() { - return null; + return toStream() + .collect(Collectors.toList()); } //TODO public Stream toStream() { - return null; + return Arrays.stream(peopleArray); + // Arrays.stream(super.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..834cb95 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java @@ -11,6 +11,9 @@ * Created by leon on 5/25/17. */ public final class ListConverter extends PersonConversionAgent> { + + List peopleList = super.objectSequence; + public ListConverter(List people) { super(people); } @@ -29,11 +32,13 @@ public List toList() { //TODO public Stream toStream() { - return null; + return peopleList.stream(); } //TODO public Person[] toArray() { - return null; + return peopleList + .stream() + .toArray(Person[]::new); } } diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java index 159d048..d41eaa0 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java @@ -25,16 +25,17 @@ public StreamConverter(int collectionSize) { // TODO public List toList() { - return null; + return personList; } // TODO public Stream toStream() { - return null; + return this.personList.stream(); } // TODO public Person[] toArray() { - return null; + return this.personList + .toArray(new Person[0]); } }