diff --git a/looptest.iml b/looptest.iml
index 7f2d304..9069f4d 100644
--- a/looptest.iml
+++ b/looptest.iml
@@ -1,6 +1,6 @@
-
+
@@ -10,10 +10,10 @@
-
+
-
-
-
+
+
+
\ No newline at end of file
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..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;
@@ -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(new PersonFactory().createPersonStream(100), RandomUtils.createCharacter('A', 'Z'));
}
/**
@@ -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/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;
}
}
diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java
index a4960b1..7164a34 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;
@@ -36,7 +35,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 +48,24 @@ public List getNames() {
* @return list of uniquely named Person objects
*/ //TODO
public Stream getUniquelyNamedPeople() {
- return null;
+ 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;
}
@@ -53,7 +74,11 @@ public Stream getUniquelyNamedPeople() {
* @return a Stream of respective
*/ //TODO
public Stream getUniquelyNamedPeopleStartingWith(Character character) {
- return null;
+ Stream sameLetter = getUniquelyNamedPeople()
+ .filter(person -> person.getName().charAt(0) == character);
+
+
+ return sameLetter;
}
/**
@@ -61,22 +86,33 @@ 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> nested =
+ people.stream()
+ .map(val ->Arrays.stream(val.getAliases()));
+
+ return nested;
}
@@ -84,7 +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
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;
}
}