diff --git a/src/main/java/com/zipcodewilmington/assessment2/part1/BasicUtilities.java b/src/main/java/com/zipcodewilmington/assessment2/part1/BasicUtilities.java index 1402353..7ce09f9 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part1/BasicUtilities.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part1/BasicUtilities.java @@ -2,18 +2,18 @@ public class BasicUtilities { public Boolean isGreaterThan5(Integer value) { - return null; + return value >= 5; } public Boolean isLessThan7(Integer value) { - return null; + return value <= 7; } public Boolean isBetween5And7(Integer valueToEvaluate) { - return null; + return valueToEvaluate >= 5 && valueToEvaluate <= 7; } public Boolean startsWith(String string, Character character) { - return null; + return string.charAt(0) == Character.toUpperCase(character) || string.charAt(0) == Character.toLowerCase(character); } } diff --git a/src/main/java/com/zipcodewilmington/assessment2/part1/IntegerArrayUtilities.java b/src/main/java/com/zipcodewilmington/assessment2/part1/IntegerArrayUtilities.java index a360000..3ff6d57 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part1/IntegerArrayUtilities.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part1/IntegerArrayUtilities.java @@ -1,19 +1,28 @@ package com.zipcodewilmington.assessment2.part1; public class IntegerArrayUtilities { + public Boolean hasEvenLength(Integer[] array) { - return null; + return array.length % 2 == 0; } public Integer[] range(int start, int stop) { - return null; + Integer[] ranger = new Integer[stop - start + 1]; + int index = 0; + for (int i = stop; i >= start; i--) { + ranger[index] = i; + index++; + } + + return ranger; } public Integer getSumOfFirstTwo(Integer[] array) { - return null; + return array[0] + array[1]; } public Integer getProductOfFirstTwo(Integer[] array) { - return null; + return array[array.length-1] * array[array.length-2]; } + } diff --git a/src/main/java/com/zipcodewilmington/assessment2/part1/WuTangConcatenator.java b/src/main/java/com/zipcodewilmington/assessment2/part1/WuTangConcatenator.java index 63f210e..2b0893f 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part1/WuTangConcatenator.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part1/WuTangConcatenator.java @@ -1,18 +1,22 @@ package com.zipcodewilmington.assessment2.part1; public class WuTangConcatenator { + + Integer input; + public WuTangConcatenator(Integer input) { + this.input = input; } public Boolean isWu() { - return null; + return input % 3 == 0; } public Boolean isTang() { - return null; + return input % 5 == 0; } public Boolean isWuTang() { - return null; + return input % 5 == 0 && input % 3 == 0; } } diff --git a/src/main/java/com/zipcodewilmington/assessment2/part2/ArrayUtility.java b/src/main/java/com/zipcodewilmington/assessment2/part2/ArrayUtility.java index de2f799..f6100dd 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part2/ArrayUtility.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part2/ArrayUtility.java @@ -1,19 +1,100 @@ package com.zipcodewilmington.assessment2.part2; +import java.util.Map; +import java.util.TreeMap; + public class ArrayUtility { public Integer[] merge(Integer[] array1, Integer[] array2) { - return null; + + Integer[] merge = new Integer[array1.length + array2.length]; + + for (int i = 0; i < array1.length ; i++) { + merge[i] = array1[i]; + } + for (int i = 0; i < array2.length ; i++) { + merge[i + array1.length] = array2[i]; + } + + return merge; } public Integer[] rotate(Integer[] array, Integer index) { - return null; + + Integer[] shifter = new Integer[array.length]; + + for (int i = 0; i < array.length; i++) { + if(i-index < 0){ + shifter[array.length-index + i] = array[i]; + } else { + shifter[i-index] = array[i]; + } + } + + return shifter; } public Integer countOccurrence(Integer[] array1, Integer[] array2, Integer valueToEvaluate) { - return null; + int counter = 0; + + for(Integer i : array1){ + if(i == valueToEvaluate){ + counter++; + } + } + for(Integer i : array2){ + if(i == valueToEvaluate){ + counter++; + } + } + + return counter; } public Integer mostCommon(Integer[] array) { - return null; + + Map mostMap = new TreeMap<>(); + int nullCount = 0; + + for (int i = 0; i < array.length; i++) { + if(array[i] != null){ + Integer count = mostMap.get(array[i]); + if(count == null) { + mostMap.put(array[i], 1); + } else { + mostMap.put(array[i], count++); + } + } + else { + nullCount++; + } + + } + + Integer maxKey = null; + int maxValue = 0; + + for(Map.Entry e : mostMap.entrySet()){ + if(e.getValue() >= maxValue){ + maxKey = e.getKey(); + maxValue = e.getValue(); + } + } + if(nullCount > maxValue){ + return null; + } + + return maxKey; } } + + + + + + + + + + + + diff --git a/src/main/java/com/zipcodewilmington/assessment2/part2/ListUtility.java b/src/main/java/com/zipcodewilmington/assessment2/part2/ListUtility.java index e978685..f9b780e 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part2/ListUtility.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part2/ListUtility.java @@ -1,29 +1,58 @@ package com.zipcodewilmington.assessment2.part2; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class ListUtility { - public Boolean add(int i) { - return null; + + List list = new ArrayList<>(); + + public Boolean add(Integer i) { + + if(i == null){ + list.add(null); + } + + list.add(i); + return this.list.contains(i); + } public Integer size() { - return null; + return list.size(); } public List getUnique() { - return null; + + List newList = new ArrayList<>(); + + // Streams only distinct values by using Object :: equals method + newList = list.stream().distinct().collect(Collectors.toList()); + + return newList; } public String join() { - return null; + String str = ""; + for(int i = 0; i < list.size() - 1; i++){ + str = str + list.get(i) + ", "; + } + str = str + list.get(list.size() - 1); + + return str; } + + public Integer mostCommon() { - return null; + ArrayUtility arrayUtility = new ArrayUtility(); + Integer[] array = new Integer[list.size()]; + array = list.toArray(array); + return arrayUtility.mostCommon(array); } public Boolean contains(Integer valueToAdd) { - return null; + return list.contains(valueToAdd); } } diff --git a/src/main/java/com/zipcodewilmington/assessment2/part2/Router.java b/src/main/java/com/zipcodewilmington/assessment2/part2/Router.java index 2267425..75cf289 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part2/Router.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part2/Router.java @@ -1,20 +1,38 @@ package com.zipcodewilmington.assessment2.part2; +import java.util.LinkedHashMap; +import java.util.Map; + public class Router { + + Map map = new LinkedHashMap<>(); + StringBuilder str = new StringBuilder(); + public void add(String path, String controller) { + map.put(path, controller); + str.append(path); + str.append(controller); + str.append('\n'); } public Integer size() { - return null; + return map.size(); } public String getController(String path) { - return null; + return map.get(path); } public void update(String path, String studentController) { + add(path, studentController); } public void remove(String path) { + map.put(path, null); + } + + @Override + public String toString() { + return str.toString(); } } diff --git a/src/main/java/com/zipcodewilmington/assessment2/part3/Bird.java b/src/main/java/com/zipcodewilmington/assessment2/part3/Bird.java index ee230c5..33c199e 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part3/Bird.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part3/Bird.java @@ -1,7 +1,17 @@ package com.zipcodewilmington.assessment2.part3; -public class Bird { +public abstract class Bird implements Animal { public String move() { + return "fly"; + } + + @Override + public int getSpeed() { + return 0; + } + + @Override + public String color() { return null; } diff --git a/src/main/java/com/zipcodewilmington/assessment2/part3/BlueJay.java b/src/main/java/com/zipcodewilmington/assessment2/part3/BlueJay.java index f18d13a..7c3f20e 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part3/BlueJay.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part3/BlueJay.java @@ -1,4 +1,18 @@ package com.zipcodewilmington.assessment2.part3; -public class BlueJay { +public class BlueJay extends Bird implements Animal { + @Override + public String move() { + return "fly"; + } + + @Override + public int getSpeed() { + return 13; + } + + @Override + public String color() { + return "blue"; + } } diff --git a/src/main/java/com/zipcodewilmington/assessment2/part3/Horse.java b/src/main/java/com/zipcodewilmington/assessment2/part3/Horse.java index e78cf2b..e033c1c 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part3/Horse.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part3/Horse.java @@ -1,4 +1,18 @@ package com.zipcodewilmington.assessment2.part3; -public class Horse{ +public class Horse implements Animal{ + @Override + public String move() { + return "gallop"; + } + + @Override + public int getSpeed() { + return 40; + } + + @Override + public String color() { + return "brown"; + } } diff --git a/src/main/java/com/zipcodewilmington/assessment2/part3/RedRobin.java b/src/main/java/com/zipcodewilmington/assessment2/part3/RedRobin.java index c1e85f2..171b589 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part3/RedRobin.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part3/RedRobin.java @@ -1,4 +1,30 @@ package com.zipcodewilmington.assessment2.part3; -public class RedRobin { +public class RedRobin extends Bird implements Animal{ + String migrationMonth; + + @Override + public String getMigrationMonth() { + return migrationMonth; + } + + @Override + public void setMigrationMonth(String migrationMonth) { + this.migrationMonth = migrationMonth; + } + + @Override + public String move() { + return "fly"; + } + + @Override + public int getSpeed() { + return 10; + } + + @Override + public String color() { + return "red"; + } } diff --git a/src/main/java/com/zipcodewilmington/assessment2/part3/SpeedComparator.java b/src/main/java/com/zipcodewilmington/assessment2/part3/SpeedComparator.java index 532e766..a798358 100644 --- a/src/main/java/com/zipcodewilmington/assessment2/part3/SpeedComparator.java +++ b/src/main/java/com/zipcodewilmington/assessment2/part3/SpeedComparator.java @@ -1,4 +1,12 @@ package com.zipcodewilmington.assessment2.part3; -public class SpeedComparator { +import java.util.Comparator; + +public class SpeedComparator implements Comparator { + + @Override + public int compare(Animal o1, Animal o2) { + return o2.getSpeed() - o1.getSpeed(); + } + } diff --git a/src/test/java/com/zipcodewilmington/assessment2/part2/router/ToStringTest.java b/src/test/java/com/zipcodewilmington/assessment2/part2/router/ToStringTest.java index b199783..7d9e8e7 100644 --- a/src/test/java/com/zipcodewilmington/assessment2/part2/router/ToStringTest.java +++ b/src/test/java/com/zipcodewilmington/assessment2/part2/router/ToStringTest.java @@ -36,8 +36,9 @@ public void test4() { new Pair<>("/instructors", "InstructorController")); } - @Test - public void test(Pair... pairs) { + + + private void test(Pair... pairs) { // given StringBuilder expectedString = new StringBuilder(); Router router = new Router();