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/StreamFilter.java b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java
index d8b89ae..bae9da4 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,14 @@ 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();
+// this(Stream.empty(), null);
}
/**
@@ -28,7 +38,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 +46,8 @@ 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 +66,7 @@ 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,8 @@ 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 +85,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 +96,8 @@ 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..b244ec7 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;
+
+ return Arrays.stream((someWord.split("")));
}
/**
diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java
index a10ec7b..c471b64 100644
--- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java
+++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java
@@ -39,7 +39,11 @@ 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,9 @@ 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..8d5502c 100644
--- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java
+++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java
@@ -1,13 +1,11 @@
package com.zipcodewilmington.streams.anthropoid;
+import com.zipcodewilmington.streams.conversions.ArrayConverter;
import com.zipcodewilmington.streams.tools.ReflectionUtils;
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 +34,13 @@ public void addPerson(Person person) {
* @return list of names of Person objects
*/ // TODO
public List getNames() {
- return null;
+ List list =
+ this.people
+ .stream()
+ .map(p -> p.getName())
+ .collect(Collectors.toList());
+
+ return list;
}
@@ -44,7 +48,22 @@ public List getNames() {
* @return list of uniquely named Person objects
*/ //TODO
public Stream getUniquelyNamedPeople() {
- return null;
+ List namesList = getNames() //distinct now
+ .stream()
+ .distinct()
+ .collect(Collectors.toList());
+ List uniquelyNamePeople = new ArrayList<>();
+
+ this.people
+ .stream()
+ .forEach(person -> {
+ if(namesList.contains(person.getName())){ //is name
+ uniquelyNamePeople.add(person); //then add that person object
+ namesList.remove(person.getName()); //remove from distinct names
+ }
+ });
+
+ return uniquelyNamePeople.stream();
}
@@ -53,7 +72,9 @@ 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);
}
/**
@@ -61,14 +82,18 @@ 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));
}
@@ -76,7 +101,8 @@ public Map getIdToNameMap() {
* @return Stream of Stream of Aliases
*/ // TODO
public Stream> getNestedAliases() {
- return null;
+
+ return Stream.of(getAllAliases());
}
@@ -84,26 +110,35 @@ public Stream> getNestedAliases() {
* @return Stream of all Aliases
*/ // TODO
public Stream getAllAliases() {
- return null;
+
+ return people
+ .stream()
+ .flatMap(person -> Arrays.stream(person.getAliases()))
+ .collect(Collectors.toList())
+ .stream();
}
// DO NOT MODIFY
public Boolean contains(Person p) {
+
return people.contains(p);
}
// DO NOT MODIFY
public void clear() {
+
people.clear();
}
// DO NOT MODIFY
public int size() {
+
return people.size();
}
@Override // DO NOT MODIFY
public Iterator iterator() {
+
return people.iterator();
}
}
diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java
index 0a9d4d8..2f5fc1e 100644
--- a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java
+++ b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java
@@ -12,10 +12,13 @@
* Created by leon on 5/25/17.
*/
public final class ArrayConverter extends PersonConversionAgent {
+ private Person[] peopleArray = super.objectSequence;
+
public ArrayConverter(Person... people) {
super(people);
}
+
public ArrayConverter(int collectionSize) {
this(Stream
.generate(new PersonFactory()::createRandomPerson)
@@ -25,16 +28,18 @@ 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);
}
@Override
public Person[] toArray() {
- return super.objectSequence;
+ return peopleArray;
}
}
diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java
index b64540b..5ce1f51 100644
--- a/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java
+++ b/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java
@@ -11,6 +11,7 @@
* 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 +30,11 @@ 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..6d49a1d 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 this.personList.stream();
}
// TODO
public Person[] toArray() {
- return null;
+ return personList.toArray(new Person[0]);
}
}