diff --git a/src/main/java/com/zipcodewilmington/arrayutility/ArrayUtility.java b/src/main/java/com/zipcodewilmington/arrayutility/ArrayUtility.java index ca32e28..a1a3a67 100644 --- a/src/main/java/com/zipcodewilmington/arrayutility/ArrayUtility.java +++ b/src/main/java/com/zipcodewilmington/arrayutility/ArrayUtility.java @@ -1,7 +1,47 @@ package com.zipcodewilmington.arrayutility; +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.Comparator; + /** * Created by leon on 3/6/18. */ -public class ArrayUtility { +public class ArrayUtility { + E[] array; + public ArrayUtility(E[] array){ + this.array = array; + } +//is it posssible to do this better without an unchecked cast? + //maybe doing my own array conversion method? + public E[] removeValue(E valueToRemove) { + return Arrays + .stream(this.array) + .filter(q-> !q.equals(valueToRemove)) + .toArray(q -> Arrays.copyOf(this.array, + this.array.length - getNumberOfOccurrences(valueToRemove))); + } + + public Integer countDuplicatesInMerge(E[] arrayToMerge, E valueToEvaluate) { + return Math + .toIntExact(Arrays + .stream(arrayToMerge) + .filter(q-> q.equals(valueToEvaluate)) + .count() + getNumberOfOccurrences(valueToEvaluate)); + } + + public Integer getNumberOfOccurrences(E valueToEvaluate) { + return Math + .toIntExact(Arrays + .stream(this.array) + .filter(q-> q.equals(valueToEvaluate)) + .count()); + } + + public E getMostCommonFromMerge(E[] arrayToMerge) { + return Arrays + .stream(arrayToMerge) + .max(Comparator.comparing(this::getNumberOfOccurrences)) + .orElse(null); + } } diff --git a/src/test/java/com/zipcodewilmington/arrayutility/RemoveValueTest.java b/src/test/java/com/zipcodewilmington/arrayutility/RemoveValueTest.java index d464896..1b82da0 100644 --- a/src/test/java/com/zipcodewilmington/arrayutility/RemoveValueTest.java +++ b/src/test/java/com/zipcodewilmington/arrayutility/RemoveValueTest.java @@ -1,6 +1,5 @@ package com.zipcodewilmington.arrayutility; -import com.zipcodewilmington.UnitTestingUtils; import org.junit.Test; /**