diff --git a/src/main/java/com/zipcodewilmington/arrayutility/ArrayUtility.java b/src/main/java/com/zipcodewilmington/arrayutility/ArrayUtility.java index ca32e28..214c92a 100644 --- a/src/main/java/com/zipcodewilmington/arrayutility/ArrayUtility.java +++ b/src/main/java/com/zipcodewilmington/arrayutility/ArrayUtility.java @@ -1,7 +1,55 @@ package com.zipcodewilmington.arrayutility; +import java.util.*; + /** * Created by leon on 3/6/18. */ -public class ArrayUtility { +public class ArrayUtility { + T [] currentArray; + + public ArrayUtility(T[] inputArr){ + this.currentArray = inputArr; + } + + public Integer countDuplicatesInMerge(T[] arrayToMerge, T valueToEvaluate) { + ArrayList mergedList = combine(arrayToMerge); + this.currentArray = (T[]) mergedList.toArray(); + Integer count = getNumberOfOccurrences(valueToEvaluate); + return count; + } + + public T getMostCommonFromMerge(T[] arrayToMerge) { + ArrayList mergedList = combine(arrayToMerge); + T mostCommon = null; + int mostCount = 0; + for(T element : mergedList) { + Integer currentCount = getNumberOfOccurrences(element); + if(currentCount > mostCount){ + mostCount = currentCount; + mostCommon = element; + } + } + return mostCommon; + } + + public Integer getNumberOfOccurrences(T valueToEvaluate) { + ArrayList currentList = new ArrayList<>(Arrays.asList(currentArray)); + Integer count = Collections.frequency(currentList,valueToEvaluate); + return count; + } + + public T[] removeValue(T valueToRemove) { + ArrayList currentList = new ArrayList<>(Arrays.asList(currentArray)); + currentList.removeIf(e -> e.equals(valueToRemove)); + return (T[]) currentList.toArray(); + } + + private ArrayList combine(T[] arrayToCombine) { + ArrayList arrToMergeAsList = new ArrayList<>(Arrays.asList(arrayToCombine)); + ArrayList currentList = new ArrayList<>(Arrays.asList(currentArray)); + currentList.addAll(arrToMergeAsList); + return currentList; + } } + diff --git a/src/test/java/com/zipcodewilmington/arrayutility/CountDuplicatesInMergeTest.java b/src/test/java/com/zipcodewilmington/arrayutility/CountDuplicatesInMergeTest.java index 2e85559..5250e46 100644 --- a/src/test/java/com/zipcodewilmington/arrayutility/CountDuplicatesInMergeTest.java +++ b/src/test/java/com/zipcodewilmington/arrayutility/CountDuplicatesInMergeTest.java @@ -34,7 +34,7 @@ public void longTest() { ArrayUtility arrayUtility = new ArrayUtility(inputArray); // When - Integer actual = arrayUtility.countDuplicatesInMerge(arrayToMerge, valueToEvaluate); + Object actual = arrayUtility.countDuplicatesInMerge(arrayToMerge, valueToEvaluate); // Then Assert.assertEquals(expected, actual); @@ -51,7 +51,7 @@ public void stringTest() { ArrayUtility arrayUtility = new ArrayUtility(inputArray); // When - Integer actual = arrayUtility.countDuplicatesInMerge(arrayToMerge, valueToEvaluate); + Object actual = arrayUtility.countDuplicatesInMerge(arrayToMerge, valueToEvaluate); // Then Assert.assertEquals(expected, actual); @@ -68,7 +68,7 @@ public void objectTest() { ArrayUtility arrayUtility = new ArrayUtility(inputArray); // When - Integer actual = arrayUtility.countDuplicatesInMerge(arrayToMerge, valueToEvaluate); + Object actual = arrayUtility.countDuplicatesInMerge(arrayToMerge, valueToEvaluate); // Then Assert.assertEquals(expected, actual); diff --git a/src/test/java/com/zipcodewilmington/arrayutility/GetNumberOfOccurrencesTest.java b/src/test/java/com/zipcodewilmington/arrayutility/GetNumberOfOccurrencesTest.java index e9bcc4f..c5a8237 100644 --- a/src/test/java/com/zipcodewilmington/arrayutility/GetNumberOfOccurrencesTest.java +++ b/src/test/java/com/zipcodewilmington/arrayutility/GetNumberOfOccurrencesTest.java @@ -32,7 +32,7 @@ public void longTest() { ArrayUtility arrayUtility = new ArrayUtility(inputArray); // When - Integer actual = arrayUtility.getNumberOfOccurrences(valueToEvaluate); + Object actual = arrayUtility.getNumberOfOccurrences(valueToEvaluate); // Then Assert.assertEquals(expected, actual); @@ -47,7 +47,7 @@ public void stringTest() { ArrayUtility arrayUtility = new ArrayUtility(inputArray); // When - Integer actual = arrayUtility.getNumberOfOccurrences(valueToEvaluate); + Object actual = arrayUtility.getNumberOfOccurrences(valueToEvaluate); // Then Assert.assertEquals(expected, actual); @@ -62,7 +62,7 @@ public void objectTest() { ArrayUtility arrayUtility = new ArrayUtility(inputArray); // When - Integer actual = arrayUtility.getNumberOfOccurrences(valueToEvaluate); + Object actual = arrayUtility.getNumberOfOccurrences(valueToEvaluate); // Then Assert.assertEquals(expected, actual); diff --git a/src/test/java/com/zipcodewilmington/arrayutility/RemoveValueTest.java b/src/test/java/com/zipcodewilmington/arrayutility/RemoveValueTest.java index d464896..8604bfd 100644 --- a/src/test/java/com/zipcodewilmington/arrayutility/RemoveValueTest.java +++ b/src/test/java/com/zipcodewilmington/arrayutility/RemoveValueTest.java @@ -1,6 +1,6 @@ package com.zipcodewilmington.arrayutility; -import com.zipcodewilmington.UnitTestingUtils; +import com.zipcodewilmington.arrayutility.UnitTestingUtils; import org.junit.Test; /** @@ -18,7 +18,7 @@ public void integerTest() { // When - Integer[] actual = arrayUtility.removeValue(valueToRemove); + Object[] actual = arrayUtility.removeValue(valueToRemove); // Then UnitTestingUtils.assertArrayEquality(expected, actual); @@ -34,7 +34,7 @@ public void longTest() { // When - Long[] actual = arrayUtility.removeValue(valueToRemove); + Object[] actual = arrayUtility.removeValue(valueToRemove); // Then UnitTestingUtils.assertArrayEquality(expected, actual); @@ -51,7 +51,7 @@ public void stringTest() { // When - String[] actual = arrayUtility.removeValue(valueToRemove); + Object[] actual = arrayUtility.removeValue(valueToRemove); // Then UnitTestingUtils.assertArrayEquality(expected, actual);