From a7babfbc951e5a8d01e42e41148fe37b68331623 Mon Sep 17 00:00:00 2001 From: Katrice Williams-Dredden Date: Sun, 11 Feb 2018 20:01:46 -0500 Subject: [PATCH 1/4] just starting --- .../looplabs/IntegerDuplicateDeleter.java | 16 ++++++++++++++++ .../looplabs/StringDuplicateDeleter.java | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java index ee550c5..af5cdf2 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java @@ -5,4 +5,20 @@ * @ATTENTION_TO_STUDENTS You are forbidden from modifying the signature of this class. */ public final class IntegerDuplicateDeleter extends DuplicateDeleter { + //constructor + public IntegerDuplicateDeleter (Integer[] intArray){ + super(intArray); + } + + @Override + public Integer[] removeDuplicates(int maxNumberOfDuplications) { + + return null; + } + + + public Integer[] removeDuplicatesExactly(int exactNumberOfDuplications){ + + return null; + } } diff --git a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java index 4818fe3..8f20395 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java @@ -5,4 +5,22 @@ * @ATTENTION_TO_STUDENTS You are forbidden from modifying the signature of this class. */ public final class StringDuplicateDeleter extends DuplicateDeleter { + //constructor + public StringDuplicateDeleter (String[] intArray){ + super(intArray); + } + + + public String[] removeDuplicates(int maxNumberOfDuplications) { + + return null; + } + + public String[] removeDuplicatesExactly(int exactNumberOfDuplications){ + + return null; + } + + + } From eb0952efe48b7fa7f878b1222f437ed391675736 Mon Sep 17 00:00:00 2001 From: Katrice Williams-Dredden Date: Sun, 11 Feb 2018 22:46:35 -0500 Subject: [PATCH 2/4] just getting started --- .../looplabs/StringDuplicateDeleter.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java index 8f20395..ddf9168 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java @@ -1,5 +1,7 @@ package com.zipcodewilmington.looplabs; +import java.util.Arrays; + /** * Created by leon on 1/28/18. * @ATTENTION_TO_STUDENTS You are forbidden from modifying the signature of this class. @@ -12,8 +14,18 @@ public StringDuplicateDeleter (String[] intArray){ public String[] removeDuplicates(int maxNumberOfDuplications) { + //create copy of array, this will be your new array + //read array + //getNumberOfOccurences + //if getNumberOfOccurences appears more than once + //removeValue + //else + //store in newArray + //return values + + String[] anIntArray = new String Arrays.copyOf(this.array.length); + for(int i = 9 ) - return null; } public String[] removeDuplicatesExactly(int exactNumberOfDuplications){ From 47b73c56a1fe7892d9ea4e90418c34b0e3b5d14b Mon Sep 17 00:00:00 2001 From: Katrice Williams-Dredden Date: Sun, 11 Feb 2018 22:57:00 -0500 Subject: [PATCH 3/4] ... --- .../looplabs/StringDuplicateDeleter.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java index ddf9168..5d8082f 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java @@ -7,6 +7,8 @@ * @ATTENTION_TO_STUDENTS You are forbidden from modifying the signature of this class. */ public final class StringDuplicateDeleter extends DuplicateDeleter { + + //constructor public StringDuplicateDeleter (String[] intArray){ super(intArray); @@ -23,9 +25,27 @@ public String[] removeDuplicates(int maxNumberOfDuplications) { //store in newArray //return values - String[] anIntArray = new String Arrays.copyOf(this.array.length); - for(int i = 9 ) + String[] anIntArray = new String(Arrays.copyOf(this.array.length)); + for (int i = 0; i < this.array.length; i++){ + if(getNumberOfOccurences < anIntArray[i]){ + + } + } + return null; + } + + public static int getNumberOfOccurrences(String[] array, String value) { + + //created a countOccurence holder, to hold value everytime it appears + + int countOccurence = 0; + + for (String myValue : array) { + if(myValue.equals(value)) + countOccurence++; + } + return countOccurence; } public String[] removeDuplicatesExactly(int exactNumberOfDuplications){ From 021bf4117518e557139bdf7d09bd6a01d527f6e7 Mon Sep 17 00:00:00 2001 From: Katrice Williams-Dredden Date: Mon, 12 Feb 2018 07:05:19 -0500 Subject: [PATCH 4/4] done --- .../looplabs/IntegerDuplicateDeleter.java | 91 +++++++++++++- .../looplabs/StringDuplicateDeleter.java | 112 ++++++++++++++++-- 2 files changed, 190 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java index af5cdf2..bb6670a 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java @@ -1,24 +1,105 @@ 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 { //constructor - public IntegerDuplicateDeleter (Integer[] intArray){ + public IntegerDuplicateDeleter(Integer[] intArray) { super(intArray); } + Integer[] anIntArray = Arrays.copyOf(this.array, this.array.length); + @Override public Integer[] removeDuplicates(int maxNumberOfDuplications) { - return null; + int noDuplicates = 0; + Integer[] duplicates = new Integer[0]; + int duplicatesIndex = 0; + for (int i = 0; i < anIntArray.length; i++) { + if (contains(duplicates, anIntArray[i])) { + continue; + } else if (getNumberOfOccurrences(anIntArray, anIntArray[i]) >= maxNumberOfDuplications) { + duplicates = Arrays.copyOf(duplicates, duplicates.length + 1); + duplicates[duplicatesIndex] = array[i]; + duplicatesIndex++; + } + } + Integer[] checking = Arrays.copyOf(anIntArray, anIntArray.length); + for (Integer k : duplicates) { + checking = removeValue(checking, k); + + } + return checking; + } + + + public Integer[] removeDuplicatesExactly(int exactNumberOfDuplications) { + + int noDuplicates = 0; + Integer[] duplicates = new Integer[0]; + int duplicatesIndex = 0; + for (int i = 0; i < anIntArray.length; i++) { + if (contains(duplicates, anIntArray[i])) { + continue; + } else if (getNumberOfOccurrences(anIntArray, anIntArray[i]) == exactNumberOfDuplications) { + duplicates = Arrays.copyOf(duplicates, duplicates.length + 1); + duplicates[duplicatesIndex] = array[i]; + duplicatesIndex++; + } + } + Integer[] checking = Arrays.copyOf(anIntArray, anIntArray.length); + for (Integer k : duplicates) { + checking = removeValue(checking, k); + + } + return checking; + } + + + public static int getNumberOfOccurrences(Integer[] array, Integer value) { + + //created a countOccurence holder, to hold value everytime it appears + + int countOccurence = 0; + + for (Integer myValue : array) { + if (myValue.equals(value)) + countOccurence++; + } + + return countOccurence; } - public Integer[] removeDuplicatesExactly(int exactNumberOfDuplications){ + public static Integer[] removeValue(Integer[] array, Integer valueToRemove) { + + int newSize = array.length - getNumberOfOccurrences(array, valueToRemove); + Integer[] outputArray = new Integer[newSize]; + int indexNotDuplicates = 0; + + for (int i = 0; i < array.length; i++) { + if (!array[i].equals(valueToRemove)) { + outputArray[indexNotDuplicates] = array[i]; + indexNotDuplicates++; + } + } + return outputArray; + } - return null; + public static boolean contains(Integer[] array, Integer value) { + /*the enhanced for loop starts at String myValue and searches to the end of array(so at every index comparing + . Then we add an if statement to see if the beginning of myValue equals value (which is what we are looking + for). */ + for (Integer myValue : array) { + if (myValue.equals(value)) { + return true; + } + } + return false; } -} +} \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java index 5d8082f..7e9dd77 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java @@ -12,7 +12,9 @@ public final class StringDuplicateDeleter extends DuplicateDeleter { //constructor public StringDuplicateDeleter (String[] intArray){ super(intArray); + } + String[] anIntArray = Arrays.copyOf(this.array,this.array.length); public String[] removeDuplicates(int maxNumberOfDuplications) { @@ -20,20 +22,83 @@ public String[] removeDuplicates(int maxNumberOfDuplications) { //read array //getNumberOfOccurences //if getNumberOfOccurences appears more than once - //removeValue + //removeValue //else - //store in newArray + //store in newArray //return values - String[] anIntArray = new String(Arrays.copyOf(this.array.length)); - for (int i = 0; i < this.array.length; i++){ - if(getNumberOfOccurences < anIntArray[i]){ + /*private static final NULL_ARRAY = new String[0]; + else if (anIntArray == null){ + return NULL_ARRAY; + }*/ + /*okay first we are making a new array, but a copy, it will copy this.array which is intArray and copy + its length (it takes two parameters)*/ + + int noDuplicates = 0; + String[] duplicates = new String[0]; + int duplicatesIndex = 0; + for (int i = 0; i < anIntArray.length; i++) { + if (contains(duplicates, anIntArray[i])) { + continue; + } else if (getNumberOfOccurrences(anIntArray, anIntArray[i]) >= maxNumberOfDuplications) { + duplicates = Arrays.copyOf(duplicates, duplicates.length + 1); + duplicates[duplicatesIndex] = array[i]; + duplicatesIndex++; + } + } + String[] checking = Arrays.copyOf(anIntArray, anIntArray.length); + for (String k : duplicates) { + checking = removeValue(checking, k); + + } + return checking; + } + + + + + public String[] removeDuplicatesExactly(int exactNumberOfDuplications){ + + //create copy of array, this will be your new array + //read array + //getNumberOfOccurences + //if getNumberOfOccurences appears more than once + //removeValue + //else + //store in newArray + //return values + /*private static final NULL_ARRAY = new String[0]; + else if (anIntArray == null){ + return NULL_ARRAY; + }*/ + /*okay first we are making a new array, but a copy, it will copy this.array which is intArray and copy + its length (it takes two parameters)*/ + + int noDuplicates = 0; + String[] duplicates = new String[0]; + int duplicatesIndex = 0; + for (int i = 0; i < anIntArray.length; i++) { + if (contains(duplicates, anIntArray[i])) { + continue; + } else if (getNumberOfOccurrences(anIntArray, anIntArray[i]) == exactNumberOfDuplications) { + duplicates = Arrays.copyOf(duplicates, duplicates.length + 1); + duplicates[duplicatesIndex] = array[i]; + duplicatesIndex++; } } - return null; + String[] checking = Arrays.copyOf(anIntArray, anIntArray.length); + for (String k : duplicates) { + checking = removeValue(checking, k); + + } + return checking; + } + + + public static int getNumberOfOccurrences(String[] array, String value) { //created a countOccurence holder, to hold value everytime it appears @@ -48,11 +113,42 @@ public static int getNumberOfOccurrences(String[] array, String value) { return countOccurence; } - public String[] removeDuplicatesExactly(int exactNumberOfDuplications){ - return null; + public static String[] removeValue(String[] array, String valueToRemove) { + /*1.we create this 'newSize' to hold the size of the array + 2.now we have to create the array, with the new array size. + 3.created a placeholder for things that were not duplicates + 4.looping through the array + 5. if the array indexes are not equal to valueToRemove + 6. the next line basically swaps the array i for the other & we add to the counter + 7. printing the new results */ + int newSize = array.length - getNumberOfOccurrences(array, valueToRemove); + String[] outputArray = new String[newSize]; + int indexNotDuplicates = 0; + + for (int i =0; i