From 3637aab1b3663f10f906a0d071589056316bf2c3 Mon Sep 17 00:00:00 2001 From: Kibret Tecle Date: Sun, 11 Feb 2018 17:37:48 -0500 Subject: [PATCH 1/2] complete DuplicateDeleter Lab --- .../looplabs/DuplicateDeleter.java | 4 + .../looplabs/IntegerDuplicateDeleter.java | 105 +++++++++++++++++- .../looplabs/StringDuplicateDeleter.java | 97 ++++++++++++++++ .../looplabs/IntegerDuplicateDeleterTest.java | 2 +- .../looplabs/StringDuplicateDeleterTest.java | 1 + 5 files changed, 207 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/looplabs/DuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/DuplicateDeleter.java index c176838..d29171b 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/DuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/DuplicateDeleter.java @@ -6,10 +6,14 @@ public abstract class DuplicateDeleter implements DuplicateDeleterInterface { protected final T[] array; + public DuplicateDeleter(T[] intArray) { this.array = intArray; } abstract public T[] removeDuplicates(int maxNumberOfDuplications); + { + + } abstract public T[] removeDuplicatesExactly(int exactNumberOfDuplications); } \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java index ee550c5..3a8f760 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java @@ -1,8 +1,111 @@ package com.zipcodewilmington.looplabs; +import java.util.Arrays; + /** * Created by leon on 1/29/18. * @ATTENTION_TO_STUDENTS You are forbidden from modifying the signature of this class. */ public final class IntegerDuplicateDeleter extends DuplicateDeleter { -} + + public IntegerDuplicateDeleter(Integer[] intArray) { + super(intArray); + } + Integer[] myCopyOfArray = Arrays.copyOf(this.array, this.array.length); + + @Override + public Integer[] removeDuplicates(int maxNumberOfDuplications) { + Integer[] toBeRemoved = new Integer[0]; + int toBeRemovedIndex = 0; + for (int s : myCopyOfArray) { + if (checkExistence(toBeRemoved, s)) { + continue; + } else if (getNumberOfOccurrences(myCopyOfArray, s) >= maxNumberOfDuplications) { + toBeRemoved = Arrays.copyOf(toBeRemoved, toBeRemoved.length + 1); + toBeRemoved[toBeRemovedIndex] = s; + toBeRemovedIndex++; + } + + } + int resultIndex = 0; + Integer[] resultArray = Arrays.copyOf(myCopyOfArray, myCopyOfArray.length); + + for (int r = 0; r < toBeRemoved.length; r++) { + resultArray = deleter(resultArray, toBeRemoved[r]); + } + return resultArray; + } + + + @Override + public Integer[] removeDuplicatesExactly(int exactNumberOfDuplications) { + Integer[] toBeRemoved = new Integer[0]; + int toBeRemovedIndex = 0; + for (int s : myCopyOfArray) { + if (checkExistence(toBeRemoved, s)) { + continue; + } else if (getNumberOfOccurrences(myCopyOfArray, s) == exactNumberOfDuplications) { + toBeRemoved = Arrays.copyOf(toBeRemoved, toBeRemoved.length + 1); + toBeRemoved[toBeRemovedIndex] = s; + toBeRemovedIndex++; + } + + } + int resultIndex = 0; + Integer[] resultArray = Arrays.copyOf(myCopyOfArray, myCopyOfArray.length); + + for (int r = 0; r < toBeRemoved.length; r++) { + resultArray = deleter(resultArray, toBeRemoved[r]); + System.out.println(resultArray); + } + return resultArray; + } + + public static int getNumberOfOccurrences(Integer[] array, Integer value) { + + int counter = 0; + for(int i=0;i { + + public StringDuplicateDeleter(String[] stringArray) { + super(stringArray); + } + String[] myCopyOfArray = Arrays.copyOf(this.array,this.array.length); + + @Override + public String[] removeDuplicates(int maxNumberOfDuplications) { + String[] toBeRemoved = new String[0]; + int toBeRemovedIndex = 0; + for (String s : myCopyOfArray) { + if (checkExistence(toBeRemoved,s)) { + continue; + } else if (getNumberOfOccurrences(myCopyOfArray, s)>= maxNumberOfDuplications) { + toBeRemoved = Arrays.copyOf(toBeRemoved, toBeRemoved.length+1); + toBeRemoved[toBeRemovedIndex] = s; + toBeRemovedIndex++; + } + + } + + String[] resultArray = Arrays.copyOf(myCopyOfArray, myCopyOfArray.length); + for (int r = 0; r < toBeRemoved.length; r++) { + resultArray = deleter(resultArray, toBeRemoved[r]); + } + return resultArray; + } + @Override + public String[] removeDuplicatesExactly(int exactNumberOfDuplications) { + String[] toBeRemoved = new String[0]; + int toBeRemovedIndex = 0; + for (String s : myCopyOfArray) { + if (checkExistence(toBeRemoved,s)) { + continue; + } else if (getNumberOfOccurrences(myCopyOfArray, s) == exactNumberOfDuplications) { + toBeRemoved = Arrays.copyOf(toBeRemoved, toBeRemoved.length+1); + toBeRemoved[toBeRemovedIndex] = s; + toBeRemovedIndex++; + } + + } + + String[] resultArray = Arrays.copyOf(myCopyOfArray, myCopyOfArray.length); + for (int r = 0; r < toBeRemoved.length; r++) { + resultArray= deleter(resultArray, toBeRemoved[r]); + } + return resultArray; + } + + public static int getNumberOfOccurrences(String[] array, String value) { + + int counter = 0; + for(int i=0;i Date: Sun, 18 Feb 2018 19:25:55 -0500 Subject: [PATCH 2/2] Refactored and cleaned up --- .../looplabs/IntegerDuplicateDeleter.java | 126 +++++++----------- .../looplabs/StringDuplicateDeleter.java | 83 +++--------- .../looplabs/IntegerDuplicateDeleterTest.java | 2 +- .../looplabs/StringDuplicateDeleterTest.java | 1 - 4 files changed, 67 insertions(+), 145 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java index 3a8f760..b31d681 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java @@ -4,6 +4,7 @@ /** * Created by leon on 1/29/18. + * * @ATTENTION_TO_STUDENTS You are forbidden from modifying the signature of this class. */ public final class IntegerDuplicateDeleter extends DuplicateDeleter { @@ -11,101 +12,66 @@ public final class IntegerDuplicateDeleter extends DuplicateDeleter { public IntegerDuplicateDeleter(Integer[] intArray) { super(intArray); } + Integer[] myCopyOfArray = Arrays.copyOf(this.array, this.array.length); + /** + * + * @param maxNumberOfDuplications + * @return returns an array with integers occuring less than the maxNumberOfDuplications + */ @Override public Integer[] removeDuplicates(int maxNumberOfDuplications) { - Integer[] toBeRemoved = new Integer[0]; - int toBeRemovedIndex = 0; + Integer[] outPut = new Integer[0]; + int outPutIndex = 0; for (int s : myCopyOfArray) { - if (checkExistence(toBeRemoved, s)) { - continue; - } else if (getNumberOfOccurrences(myCopyOfArray, s) >= maxNumberOfDuplications) { - toBeRemoved = Arrays.copyOf(toBeRemoved, toBeRemoved.length + 1); - toBeRemoved[toBeRemovedIndex] = s; - toBeRemovedIndex++; - } - - } - int resultIndex = 0; - Integer[] resultArray = Arrays.copyOf(myCopyOfArray, myCopyOfArray.length); - for (int r = 0; r < toBeRemoved.length; r++) { - resultArray = deleter(resultArray, toBeRemoved[r]); + if (getNumberOfOccurrences(myCopyOfArray, s) < maxNumberOfDuplications) { + outPut = Arrays.copyOf(outPut, outPut.length + 1); + outPut[outPutIndex] = s; + outPutIndex++; } - return resultArray; } + return outPut; + } + /** + * + * @param exactNumberOfDuplications + * @return returns an array of Integers not the exactNumberOfDuplications + */ - @Override - public Integer[] removeDuplicatesExactly(int exactNumberOfDuplications) { - Integer[] toBeRemoved = new Integer[0]; - int toBeRemovedIndex = 0; - for (int s : myCopyOfArray) { - if (checkExistence(toBeRemoved, s)) { - continue; - } else if (getNumberOfOccurrences(myCopyOfArray, s) == exactNumberOfDuplications) { - toBeRemoved = Arrays.copyOf(toBeRemoved, toBeRemoved.length + 1); - toBeRemoved[toBeRemovedIndex] = s; - toBeRemovedIndex++; - } - - } - int resultIndex = 0; - Integer[] resultArray = Arrays.copyOf(myCopyOfArray, myCopyOfArray.length); + @Override + public Integer[] removeDuplicatesExactly(int exactNumberOfDuplications) { + Integer[] outPut = new Integer[0]; + int outPutIndex = 0; + for (int s : myCopyOfArray) { - for (int r = 0; r < toBeRemoved.length; r++) { - resultArray = deleter(resultArray, toBeRemoved[r]); - System.out.println(resultArray); + if (getNumberOfOccurrences(myCopyOfArray, s) != exactNumberOfDuplications) { + outPut = Arrays.copyOf(outPut, outPut.length + 1); + outPut[outPutIndex] = s; + outPutIndex++; } - return resultArray; - } - - public static int getNumberOfOccurrences(Integer[] array, Integer value) { - - int counter = 0; - for(int i=0;i= maxNumberOfDuplications) { - toBeRemoved = Arrays.copyOf(toBeRemoved, toBeRemoved.length+1); - toBeRemoved[toBeRemovedIndex] = s; - toBeRemovedIndex++; - } + if(getNumberOfOccurrences(myCopyOfArray, s)< maxNumberOfDuplications) { + outPut = Arrays.copyOf(outPut, outPut.length+1); + outPut[outPutIndex] = s; + outPutIndex++; + } } - String[] resultArray = Arrays.copyOf(myCopyOfArray, myCopyOfArray.length); - for (int r = 0; r < toBeRemoved.length; r++) { - resultArray = deleter(resultArray, toBeRemoved[r]); - } - return resultArray; + return outPut; } @Override public String[] removeDuplicatesExactly(int exactNumberOfDuplications) { - String[] toBeRemoved = new String[0]; - int toBeRemovedIndex = 0; + String[] outPut = new String[0]; + int outPutIndex = 0; for (String s : myCopyOfArray) { - if (checkExistence(toBeRemoved,s)) { - continue; - } else if (getNumberOfOccurrences(myCopyOfArray, s) == exactNumberOfDuplications) { - toBeRemoved = Arrays.copyOf(toBeRemoved, toBeRemoved.length+1); - toBeRemoved[toBeRemovedIndex] = s; - toBeRemovedIndex++; + if (getNumberOfOccurrences(myCopyOfArray, s) != exactNumberOfDuplications) { + outPut = Arrays.copyOf(outPut, outPut.length+1); + outPut[outPutIndex] = s; + outPutIndex++; } } - - String[] resultArray = Arrays.copyOf(myCopyOfArray, myCopyOfArray.length); - for (int r = 0; r < toBeRemoved.length; r++) { - resultArray= deleter(resultArray, toBeRemoved[r]); - } - return resultArray; + return outPut; } public static int getNumberOfOccurrences(String[] array, String value) { @@ -66,40 +58,5 @@ public static int getNumberOfOccurrences(String[] array, String value) { } return counter; } - public static String[] deleter(String[] array, String valueToRemove) { - int counter =getNumberOfOccurrences(array, valueToRemove); - String[] valuesToKeep = new String[array.length]; - for(int i=0;i