From e5937fd1b0c713822e176191952ae652a03ed0e5 Mon Sep 17 00:00:00 2001 From: Dee Date: Mon, 26 Jul 2021 14:22:47 -0400 Subject: [PATCH 1/4] person streams in factory --- looptest.iml | 8 ++++---- .../streams/anthropoid/PersonFactory.java | 20 ++++++++++++++++--- 2 files changed, 21 insertions(+), 7 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..d457635 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.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -39,7 +40,12 @@ public Person createRandomPerson() { * @return - ArrayList of Person objects */ // TODO public List createPersonList(int listSize) { - return null; + List personList = Stream + .generate(this :: createRandomPerson) + .limit(listSize) + .collect(Collectors.toList()); + + return personList; } @@ -48,7 +54,12 @@ public List createPersonList(int listSize) { * @return - Array of Person objects */ // TODO public Person[] createPersonArray(int arrayLength) { - return null; + Person[] personArray = + Stream + .generate(this::createRandomPerson) + .limit(arrayLength) + .toArray(Person[]::new); + return personArray; } @@ -59,6 +70,9 @@ public Person[] createPersonArray(int arrayLength) { * @return - Stream representation of collection of Person objects */ // TODO public Stream createPersonStream(int streamCount) { - return null; + Stream pStream = Stream + .generate(this::createRandomPerson) + .limit(streamCount); + return pStream; } } From e67a2f009fee1caf6238b6102518fb5ba58faf35 Mon Sep 17 00:00:00 2001 From: Dee Date: Mon, 26 Jul 2021 16:53:05 -0400 Subject: [PATCH 2/4] some filter streams, warehouse --- .../streams/anthropoid/PersonWarehouse.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index a4960b1..d4d0516 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -36,7 +36,12 @@ public void addPerson(Person person) { * @return list of names of Person objects */ // TODO public List getNames() { - return null; + List myPeoplesNames = + people.stream() + .map(Person::getName) + .collect(Collectors.toList()); + + return myPeoplesNames; } @@ -44,7 +49,11 @@ public List getNames() { * @return list of uniquely named Person objects */ //TODO public Stream getUniquelyNamedPeople() { - return null; + Stream names = getNames().stream().distinct(); + Stream uniquePeeps = people + .stream() + .distinct(); + return uniquePeeps; } @@ -53,7 +62,11 @@ public Stream getUniquelyNamedPeople() { * @return a Stream of respective */ //TODO public Stream getUniquelyNamedPeopleStartingWith(Character character) { - return null; + Stream sameLetter = getUniquelyNamedPeople() + .filter(person -> person.getName().startsWith(String.valueOf(character))); + + + return sameLetter; } /** From b32230aaf97e29d94223b40d8e1a6ae6601c48d9 Mon Sep 17 00:00:00 2001 From: Dee Date: Wed, 28 Jul 2021 16:59:21 -0400 Subject: [PATCH 3/4] conversions and warehouse --- looptest.iml | 2 +- pom.xml | 4 +- .../streams/StreamFilter.java | 2 +- .../streams/anthropoid/PersonWarehouse.java | 47 ++++++++++++++----- .../streams/conversions/ArrayConverter.java | 6 ++- .../streams/conversions/ListConverter.java | 5 +- .../streams/conversions/StreamConverter.java | 11 +++-- 7 files changed, 54 insertions(+), 23 deletions(-) diff --git a/looptest.iml b/looptest.iml index e34277e..9069f4d 100644 --- a/looptest.iml +++ b/looptest.iml @@ -1,6 +1,6 @@ - + diff --git a/pom.xml b/pom.xml index 5dd0ef2..8bb93ec 100644 --- a/pom.xml +++ b/pom.xml @@ -28,8 +28,8 @@ maven-compiler-plugin 3.8.0 - 1.8 - 1.8 + 10 + 10 diff --git a/src/main/java/com/zipcodewilmington/streams/StreamFilter.java b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java index d8b89ae..b115818 100644 --- a/src/main/java/com/zipcodewilmington/streams/StreamFilter.java +++ b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java @@ -20,7 +20,7 @@ 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); + this(new PersonFactory().createPersonStream(100), RandomUtils.createCharacter('A', 'Z')); } /** diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java index d4d0516..02dcd38 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -4,10 +4,9 @@ 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.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -49,10 +48,23 @@ public List getNames() { * @return list of uniquely named Person objects */ //TODO public Stream getUniquelyNamedPeople() { - Stream names = getNames().stream().distinct(); - Stream uniquePeeps = people - .stream() - .distinct(); + List names = getNames().stream().distinct().collect(Collectors.toList()); + List unique = new ArrayList<>(); + for (Person person: people) { + if(names.contains(person.getName())){ + unique.add(person); + names.remove(person.getName()); + } + + } + Stream uniquePeeps = unique.stream(); +// Predicate matchNames = val -> names.contains(val.getName());; +// +// Stream uniquePeeps = people +// .stream() +// .sorted(Person::compareTo); +// //.filter(val -> names.contains(val.getName())); + return uniquePeeps; } @@ -63,7 +75,7 @@ public Stream getUniquelyNamedPeople() { */ //TODO public Stream getUniquelyNamedPeopleStartingWith(Character character) { Stream sameLetter = getUniquelyNamedPeople() - .filter(person -> person.getName().startsWith(String.valueOf(character))); + .filter(person -> person.getName().charAt(0) == character); return sameLetter; @@ -74,22 +86,32 @@ public Stream getUniquelyNamedPeopleStartingWith(Character character) { * @return a Stream of respective */ //TODO public Stream getFirstNUniquelyNamedPeople(int n) { - return null; + Stream first = getUniquelyNamedPeople().limit(n); + return first; } /** * @return a mapping of Person Id to the respective Person name */ // TODO public Map getIdToNameMap() { - return null; + Map nameMap = people + .stream() + .collect(Collectors.toMap(Person::getPersonalId, Person::getName)); + + return nameMap; } + + /** * @return Stream of Stream of Aliases */ // TODO public Stream> getNestedAliases() { - return null; + Stream> aliases = people + .stream() + .map(val-> Stream.of(val.getAliases())); + return aliases; } @@ -97,6 +119,7 @@ public Stream> getNestedAliases() { * @return Stream of all Aliases */ // TODO public Stream getAllAliases() { + return null; } diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java index 0a9d4d8..12eba71 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java @@ -25,12 +25,14 @@ public ArrayConverter(int collectionSize) { //TODO public List toList() { - return null; + List peopleList = Arrays.stream(this.objectSequence).collect(Collectors.toList()); + return peopleList; } //TODO public Stream toStream() { - return null; + + return Arrays.stream(this.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..4bc3f3b 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java @@ -3,6 +3,7 @@ import com.zipcodewilmington.streams.anthropoid.Person; import com.zipcodewilmington.streams.anthropoid.PersonFactory; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -29,11 +30,11 @@ public List toList() { //TODO public Stream toStream() { - return null; + return toList().stream(); } //TODO public Person[] toArray() { - return null; + return toList().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..ca9160c 100644 --- a/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java +++ b/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java @@ -25,16 +25,21 @@ public StreamConverter(int collectionSize) { // TODO public List toList() { - return null; + List people = personList.stream().collect(Collectors.toList()); + return people; } // TODO public Stream toStream() { - return null; + Stream people = toList().stream(); + + return people; } // TODO public Person[] toArray() { - return null; + Person[] people = toStream().toArray(Person[]::new); + + return people; } } From 3f4bdb74bd56382761c5e2a5fa67c0fec4df12b7 Mon Sep 17 00:00:00 2001 From: Dee Date: Wed, 28 Jul 2021 19:58:45 -0400 Subject: [PATCH 4/4] streaming along --- .../streams/StreamFilter.java | 33 +++++++++++++++---- .../streams/anthropoid/PersonWarehouse.java | 15 +++++---- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/streams/StreamFilter.java b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java index b115818..e12bdfe 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; @@ -28,7 +29,8 @@ 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 +38,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 +57,15 @@ 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 -> { + if (startingCharacter.equals(person.getName().charAt(0))){ + return true; + } + return false; + }) + .collect(Collectors.toList()); + } @@ -64,7 +74,9 @@ public List toListMultiLine() { * @return a list of person objects whose name starts with `this.startingCharacter` */ //TODO public List toListOneLine() { - return null; + List personList = personStream.filter(person -> startingCharacter.equals(person.getName().charAt(0))).collect(Collectors.toList()); + + return personList; } @@ -73,7 +85,8 @@ public List toListOneLine() { * @return an array of person object whose name starts with `this.startingCharacter` */ //TODO public Person[] toArrayOneLine() { - return null; + Person[] personArray = personStream.filter(person -> startingCharacter.equals(person.getName().charAt(0))).toArray(Person[]::new); + return personArray; } @@ -82,7 +95,15 @@ 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 -> { + if (startingCharacter.equals(person.getName().charAt(0))){ + return true; + } + return false; + }) + .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 02dcd38..7164a34 100644 --- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java +++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java @@ -108,10 +108,11 @@ public Map getIdToNameMap() { * @return Stream of Stream of Aliases */ // TODO public Stream> getNestedAliases() { - Stream> aliases = people - .stream() - .map(val-> Stream.of(val.getAliases())); - return aliases; + Stream> nested = + people.stream() + .map(val ->Arrays.stream(val.getAliases())); + + return nested; } @@ -119,8 +120,10 @@ public Stream> getNestedAliases() { * @return Stream of all Aliases */ // TODO public Stream getAllAliases() { - - return null; + Stream aliases = people + .stream() + .flatMap(val-> Arrays.stream(val.getAliases())); + return aliases; } // DO NOT MODIFY