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); }