From d3f2934416c89eb2d437d7909dc972bafe5e7f66 Mon Sep 17 00:00:00 2001
From: John Tokhi <56596400+tokhij@users.noreply.github.com>
Date: Sun, 24 Nov 2019 19:28:31 -0500
Subject: [PATCH] needs to pass tests
---
looptest.iml | 8 ++--
.../streams/StreamFilter.java | 17 ++++----
.../zipcodewilmington/streams/StreamMap.java | 7 ++--
.../streams/anthropoid/PersonFactory.java | 14 +++----
.../streams/anthropoid/PersonWarehouse.java | 41 +++++++++----------
.../streams/conversions/ArrayConverter.java | 13 +++---
.../streams/conversions/ListConverter.java | 13 +++---
.../streams/conversions/StreamConverter.java | 13 +++---
8 files changed, 66 insertions(+), 60 deletions(-)
diff --git a/looptest.iml b/looptest.iml
index 7f2d304..792af39 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/StreamFilter.java b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java
index d8b89ae..42b2916 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;
@@ -20,7 +21,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(Stream.generate(PersonFactory::createRandomPerson).limit(100), RandomUtils.createCharacter('A','Z'));
}
/**
@@ -28,7 +29,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 +37,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 +56,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;
+ Stream zanJi = personStream.filter(person -> startingCharacter.equals(person.getName().charAt(0)));
+ return zanJi.collect(Collectors.toList());
}
@@ -64,7 +66,7 @@ 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 +75,7 @@ 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 +84,8 @@ public Person[] toArrayOneLine() {
* @return an array of person object whose name starts with `this.startingCharacter`
*/ //TODO
public Person[] toArrayMultiLine() {
- return null;
+ Stream zanJi = personStream.filter(person -> startingCharacter.equalsIgnoreCase(person.getName().substring(0,0)));
+ return zanJi.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..2c62b9b 100644
--- a/src/main/java/com/zipcodewilmington/streams/StreamMap.java
+++ b/src/main/java/com/zipcodewilmington/streams/StreamMap.java
@@ -18,7 +18,8 @@ public class StreamMap {
* @return - a Stream of single characters
*/ //TODO
public static Stream letters(String someWord) {
- return null;
+ String[] newOne = someWord.split("");
+ return Stream.of(newOne);
}
/**
@@ -26,7 +27,7 @@ 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(s -> letters(s));
}
/**
@@ -34,6 +35,6 @@ 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(s -> letters(s));
}
}
\ 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..b320397 100644
--- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java
+++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java
@@ -21,7 +21,7 @@ public PersonFactory() {
/**
* @return a new instance of a person with fields of random values
*/
- public Person createRandomPerson() {
+ public static Person createRandomPerson() {
String name = StringUtils.capitalizeFirstChar(RandomUtils.createString('a', 'e', 3));
String[] aliases = RandomUtils.createStrings('a', 'z', 3, 5);
boolean isMale = RandomUtils.createBoolean(50);
@@ -38,8 +38,8 @@ public Person createRandomPerson() {
* @param listSize - number of Person objects to create
* @return - ArrayList of Person objects
*/ // TODO
- public List createPersonList(int listSize) {
- return null;
+ public static List createPersonList(int listSize) {
+ return createPersonStream(listSize).collect(Collectors.toList());
}
@@ -47,8 +47,8 @@ public List createPersonList(int listSize) {
* @param arrayLength - number of Person objects to create
* @return - Array of Person objects
*/ // TODO
- public Person[] createPersonArray(int arrayLength) {
- return null;
+ public static Person[] createPersonArray(int arrayLength) {
+ return createPersonStream(arrayLength).toArray(Person[]::new);
}
@@ -58,7 +58,7 @@ public Person[] createPersonArray(int arrayLength) {
* @param streamCount - number of Person objects to create
* @return - Stream representation of collection of Person objects
*/ // TODO
- public Stream createPersonStream(int streamCount) {
- return null;
+ public static Stream createPersonStream(int streamCount) {
+ return Stream.generate(PersonFactory::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..0bd1995 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;
@@ -18,14 +15,14 @@
* @ATTENTION_TO_STUDENTS You are FORBIDDEN from using loops of any sort within the definition of this class.
*/
public final class PersonWarehouse implements Iterable {
- private final LoggerHandler loggerHandler = LoggerWarehouse.getLogger(PersonWarehouse.class);
- private final List people = new ArrayList<>();
+ private static final LoggerHandler loggerHandler = LoggerWarehouse.getLogger(PersonWarehouse.class);
+ private static final List people = new ArrayList<>();
/**
* @param person the Person object to add to the warehouse
* @ATTENTION_TO_STUDENTS You are FORBIDDEN from modifying this method
*/
- public void addPerson(Person person) {
+ public static void addPerson(Person person) {
loggerHandler.disbalePrinting();
loggerHandler.info("Registering a new person object to the person warehouse...");
loggerHandler.info(ReflectionUtils.getFieldMap(person).toString());
@@ -35,16 +32,17 @@ public void addPerson(Person person) {
/**
* @return list of names of Person objects
*/ // TODO
- public List getNames() {
- return null;
+ public static List getNames() {
+ return people.stream().map(Person::getName).collect(Collectors.toList());
}
/**
* @return list of uniquely named Person objects
*/ //TODO
- public Stream getUniquelyNamedPeople() {
- return null;
+ public static Stream getUniquelyNamedPeople() {
+ Map newMap = people.stream().collect(Collectors.toMap(Person::getName, person1 -> person1, (a , b) -> a));
+ return newMap.values().stream();
}
@@ -52,39 +50,40 @@ public Stream getUniquelyNamedPeople() {
* @param character starting character of Person objects' name
* @return a Stream of respective
*/ //TODO
- public Stream getUniquelyNamedPeopleStartingWith(Character character) {
- return null;
+ public static Stream getUniquelyNamedPeopleStartingWith(Character character) {
+
+ return getUniquelyNamedPeople().filter(person -> character.equals(person.getName().charAt(0)));
}
/**
* @param n first `n` Person objects
* @return a Stream of respective
*/ //TODO
- public Stream getFirstNUniquelyNamedPeople(int n) {
- return null;
+ public static Stream getFirstNUniquelyNamedPeople(int n) {
+ return getUniquelyNamedPeople().limit(n);
}
/**
* @return a mapping of Person Id to the respective Person name
*/ // TODO
- public Map getIdToNameMap() {
- return null;
+ public static Map getIdToNameMap() {
+ return people.parallelStream().collect(Collectors.toMap(Person::getPersonalId, Person::getName));
}
/**
* @return Stream of Stream of Aliases
*/ // TODO
- public Stream> getNestedAliases() {
- return null;
+ public static Stream> getNestedAliases() {
+ return people.stream().map(person -> Arrays.stream(person.getAliases()));
}
/**
* @return Stream of all Aliases
*/ // TODO
- public Stream getAllAliases() {
- return null;
+ public static Stream getAllAliases() {
+ return people.stream().flatMap(person -> Arrays.stream(person.getAliases()));
}
// 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..ac1adb2 100644
--- a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java
+++ b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java
@@ -17,20 +17,21 @@ public ArrayConverter(Person... people) {
}
public ArrayConverter(int collectionSize) {
- this(Stream
- .generate(new PersonFactory()::createRandomPerson)
- .limit(collectionSize)
- .toArray(Person[]::new));
+ this(PersonFactory.createPersonArray(collectionSize));
+// this(Stream
+// .generate(new PersonFactory()::createRandomPerson)
+// .limit(collectionSize)
+// .toArray(Person[]::new));
}
//TODO
public List toList() {
- return null;
+ return toStream().collect(Collectors.toList());
}
//TODO
public Stream toStream() {
- return null;
+ return 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..e6f1a1d 100644
--- a/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java
+++ b/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java
@@ -16,10 +16,11 @@ public ListConverter(List people) {
}
public ListConverter(int collectionSize) {
- this(Stream
- .generate(new PersonFactory()::createRandomPerson)
- .limit(collectionSize)
- .collect(Collectors.toList()));
+ this(PersonFactory.createPersonList(collectionSize));
+// this(Stream
+// .generate(new PersonFactory()::createRandomPerson)
+// .limit(collectionSize)
+// .collect(Collectors.toList()));
}
@Override
@@ -29,11 +30,11 @@ public List toList() {
//TODO
public Stream toStream() {
- return null;
+ return super.objectSequence.stream();
}
//TODO
public Person[] toArray() {
- return null;
+ return toStream().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..770ceff 100644
--- a/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java
+++ b/src/main/java/com/zipcodewilmington/streams/conversions/StreamConverter.java
@@ -18,23 +18,24 @@ public StreamConverter(Stream people) {
}
public StreamConverter(int collectionSize) {
- this(Stream
- .generate(new PersonFactory()::createRandomPerson)
- .limit(collectionSize));
+ this(PersonFactory.createPersonStream(collectionSize));
+// this(Stream
+// .generate(new PersonFactory()::createRandomPerson)
+// .limit(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 toStream().toArray(Person[]::new);
}
}