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/Main.java b/src/main/java/com/zipcodewilmington/streams/Main.java
new file mode 100644
index 0000000..3726b56
--- /dev/null
+++ b/src/main/java/com/zipcodewilmington/streams/Main.java
@@ -0,0 +1,43 @@
+package com.zipcodewilmington.streams;
+import com.zipcodewilmington.streams.anthropoid.Person;
+import com.zipcodewilmington.streams.anthropoid.PersonFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.IntStream;
+
+public class Main {
+ public static void main(String[] args) {
+ PersonFactory taco = new PersonFactory();
+ List pizza = new ArrayList();
+ Person[] myPerson = new Person[10];
+
+ //pizza = taco.createPersonList(20);
+ myPerson = taco.createPersonArray(myPerson.length);
+
+ for (int i = 0; i < myPerson.length; i++) {
+ System.out.println(myPerson[i]);
+ System.out.println(i);
+
+ }
+
+
+
+ System.out.println("This is the size of list: " + myPerson.length);
+
+// These two are the same essentially
+// tutel ->
+// public void meFunc(int tutel)
+
+// List meList = new ArrayList<>();
+//
+// IntStream.range(1, 8)
+// .forEach(tutel -> {
+// meList.add(taco.createRandomPerson());
+// });
+// System.out.println("This is the size of list: " + meList.size());
+// meList.forEach(x -> {
+// System.out.println(x);
+// });
+ }
+}
diff --git a/src/main/java/com/zipcodewilmington/streams/StreamFilter.java b/src/main/java/com/zipcodewilmington/streams/StreamFilter.java
index d8b89ae..7b86b60 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,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); //for arrays
}
/**
@@ -36,7 +37,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); // for lists
}
@@ -55,7 +57,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 -> person.getName().startsWith((this.startingCharacter)))
+ .collect(Collectors.toList());
}
@@ -64,7 +68,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 -> person.getName().startsWith((this.startingCharacter)))
+ .collect(Collectors.toList());
}
@@ -73,7 +79,8 @@ 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 -> person.getName().startsWith((this.startingCharacter))).collect(Collectors.toList()).toArray(new Person[0]);
}
@@ -82,7 +89,10 @@ 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 -> person.getName().startsWith((this.startingCharacter)))
+ .collect(Collectors.toList())
+ .toArray(new Person[0]);
}
}
diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java
index a10ec7b..8d6fd65 100644
--- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java
+++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonFactory.java
@@ -3,9 +3,11 @@
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;
+import java.util.stream.IntStream;
import java.util.stream.Stream;
/**
@@ -38,8 +40,26 @@ public Person createRandomPerson() {
* @param listSize - number of Person objects to create
* @return - ArrayList of Person objects
*/ // TODO
+// public List createPersonList(int listSize, List lp) {
+// System.out.println("INSIDE FUNCTION AT: " + listSize);
+// Person myPerson = createRandomPerson();
+//
+// if(listSize == 0) {
+// return lp;
+// }
+//
+// lp.add(myPerson);
+//
+// return createPersonList(listSize-1, lp);
+// }
+
public List createPersonList(int listSize) {
- return null;
+ List personList = new ArrayList<>();
+ IntStream.range(0, listSize)
+ .forEach(x -> {
+ personList.add(this.createRandomPerson());
+ });
+ return personList;
}
@@ -48,7 +68,12 @@ public List createPersonList(int listSize) {
* @return - Array of Person objects
*/ // TODO
public Person[] createPersonArray(int arrayLength) {
- return null;
+ Person[] taco = new Person[arrayLength];
+ IntStream.range(0, arrayLength)
+ .forEach(x -> {
+ taco[x] = this.createRandomPerson();
+ });
+ return taco;
}
@@ -59,6 +84,8 @@ public Person[] createPersonArray(int arrayLength) {
* @return - Stream representation of collection of Person objects
*/ // TODO
public Stream createPersonStream(int streamCount) {
- return null;
+ List list = this.createPersonList(streamCount);
+ System.out.println(list.stream());
+ return list.stream();
}
}
diff --git a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java
index a4960b1..f390962 100644
--- a/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java
+++ b/src/main/java/com/zipcodewilmington/streams/anthropoid/PersonWarehouse.java
@@ -36,7 +36,11 @@ public void addPerson(Person person) {
* @return list of names of Person objects
*/ // TODO
public List getNames() {
- return null;
+ List result = people.stream()
+ .map(Person::getName)
+ .collect(Collectors.toList());
+
+ return result;
}
@@ -44,7 +48,21 @@ public List getNames() {
* @return list of uniquely named Person objects
*/ //TODO
public Stream getUniquelyNamedPeople() {
- return null;
+ List nameList = getNames()
+ .stream()
+ .distinct()
+ .collect(Collectors.toList());
+ List uneekName = new ArrayList<>();
+
+ people.stream()
+ .forEach(person ->{
+ if(nameList.contains(person.getName())){
+ uneekName.add(person);
+ nameList.remove(person.getName());
+ }
+ });
+ Stream results = uneekName.stream();
+ return results;
}
@@ -53,7 +71,10 @@ public Stream getUniquelyNamedPeople() {
* @return a Stream of respective
*/ //TODO
public Stream getUniquelyNamedPeopleStartingWith(Character character) {
- return null;
+ List charList = getUniquelyNamedPeople()
+ .collect(Collectors.toList()); //put unique people in list
+ return charList.stream()
+ .filter(person -> person.getName().charAt(0) == character);
}
/**
@@ -61,14 +82,17 @@ 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 +100,7 @@ public Map getIdToNameMap() {
* @return Stream of Stream of Aliases
*/ // TODO
public Stream> getNestedAliases() {
- return null;
+ return Stream.of(getAllAliases());
}
@@ -84,9 +108,16 @@ public Stream> getNestedAliases() {
* @return Stream of all Aliases
*/ // TODO
public Stream getAllAliases() {
- return null;
+ return people
+ .stream()
+ .map(Person::getAliases)
+ .collect(Collectors.toList())
+ .stream()
+ .flatMap(index -> Stream.of(index));
}
+
+
// DO NOT MODIFY
public Boolean contains(Person p) {
return people.contains(p);
diff --git a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java
index 0a9d4d8..10f0916 100644
--- a/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java
+++ b/src/main/java/com/zipcodewilmington/streams/conversions/ArrayConverter.java
@@ -12,6 +12,8 @@
* 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,16 +27,19 @@ public ArrayConverter(int collectionSize) {
//TODO
public List toList() {
- return null;
+// this,objectSequence.
+
+ 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..6616804 100644
--- a/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java
+++ b/src/main/java/com/zipcodewilmington/streams/conversions/ListConverter.java
@@ -29,11 +29,11 @@ public List toList() {
//TODO
public Stream toStream() {
- return null;
+ return super.objectSequence.stream();
}
//TODO
public Person[] toArray() {
- return null;
+ return super.objectSequence.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..d651b13 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 personList.stream();
}
// TODO
public Person[] toArray() {
- return null;
+ return personList.toArray(new Person[0]);
}
}
diff --git a/src/test/java/com/zipcodewilmington/streams/anthropoid/TestPersonFactory.java b/src/test/java/com/zipcodewilmington/streams/anthropoid/TestPersonFactory.java
index b9ca11c..206c3e3 100644
--- a/src/test/java/com/zipcodewilmington/streams/anthropoid/TestPersonFactory.java
+++ b/src/test/java/com/zipcodewilmington/streams/anthropoid/TestPersonFactory.java
@@ -30,9 +30,9 @@ public void setup() {
this.factory = new PersonFactory();
this.warehouse = new PersonWarehouse();
- factory
- .createPersonList(9999)
- .forEach(warehouse::addPerson);
+// factory
+// .createPersonList(9999)
+// .forEach(warehouse::addPerson);
}