From cc9c2dcd79c6b3c1cf4d2d9a18fc0132402600dc Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Thu, 8 Mar 2018 18:34:45 -0500 Subject: [PATCH 01/15] started but tests aren't passing yet --- .idea/.name | 1 + .idea/compiler.xml | 16 + .idea/libraries/Maven__junit_junit_4_12.xml | 13 + .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 + .idea/misc.xml | 13 + .idea/modules.xml | 8 + .idea/uiDesigner.xml | 124 ++++ .idea/vcs.xml | 6 + .idea/workspace.xml | 632 ++++++++++++++++++ generics.iml | 16 + src/main/java/.deleteme | 0 .../myarraylist/carolynn/MyArrayList.java | 45 ++ src/test/java/.deleteme | 0 .../myarraylist/carolynn/MyArrayListTest.java | 48 ++ 14 files changed, 935 insertions(+) create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 generics.iml delete mode 100644 src/main/java/.deleteme create mode 100644 src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java delete mode 100644 src/test/java/.deleteme create mode 100644 src/test/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayListTest.java diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..1f58a0f --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +generics \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..c20d346 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 0000000..d411041 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d30d09e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ca63f44 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..4baa2fd --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,632 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + @@ -206,7 +190,7 @@ - + - + + + + + + + + + + + - + - + - - + + + - - - - + + + + + @@ -416,76 +427,78 @@ - + - + - - + + - + - + - + - + - - + + - - + + - - + + - - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - + - - + + @@ -499,36 +512,92 @@ + + + + + + + + - - + + - - - - - - - + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java b/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java index 126dd93..ab6d2f6 100644 --- a/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java +++ b/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java @@ -7,12 +7,15 @@ public class MyArrayList { protected T[] myArrayList; + + public MyArrayList() { - this.myArrayList = ((T[]) new Array[]{}); + this.myArrayList = (T[])new Array[0]; + } - public MyArrayList(int size){ - this.myArrayList = (T[]) new Object[size]; + public MyArrayList( int size){ + myArrayList = (T[])new Array[size]; } public MyArrayList(T[] myArrayList) { @@ -24,12 +27,13 @@ public T[] getMyArrayList() { } public void add(T toBeAdded){ - T[] array = Arrays.copyOf(myArrayList, (1+myArrayList.length)); - array[array.length-1] = toBeAdded; + int mid = myArrayList.length+1; + myArrayList = Arrays.copyOf(this.myArrayList, mid); + myArrayList[myArrayList.length-1] = toBeAdded; } public void add(int index, T toBeAdded){ - T[] newArray = Arrays.copyOf(myArrayList, (myArrayList.length+1)); + T[] newArray = Arrays.copyOf(myArrayList, myArrayList.length+1); for(int i = 0; i= index) { + if(i == myArrayList.length-1){ + tempArray[i] = null; + } else { + tempArray[i]= myArrayList[i+1]; + } + } + } + myArrayList= Arrays.copyOf(tempArray, tempArray.length-1); + } + + public void clear(){ + myArrayList = Arrays.copyOf(myArrayList, 0); } } diff --git a/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayListTest.java b/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayListTest.java index 3461fa3..986daaa 100644 --- a/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayListTest.java +++ b/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayListTest.java @@ -7,14 +7,14 @@ public class MyArrayListTest { @Test public void constructor1Test(){ - MyArrayList it = new MyArrayList<>(); - Assert.assertNotNull(it); + MyArrayList array = new MyArrayList<>(); + Assert.assertNotNull(array); } @Test public void constructor2Test(){ - MyArrayList it = new MyArrayList<>(3); - Assert.assertNotNull(it); + MyArrayList array = new MyArrayList<>(3); + Assert.assertNotNull(array); } @Test @@ -30,8 +30,8 @@ public void addTest(){ @Test public void add2Test(){ - MyArrayList actual = new MyArrayList<>(); Integer[] input = {1, 2, 4, 5}; + MyArrayList actual = new MyArrayList<>(input); Integer toBeAdded = 3; int indexPosition = 2; Integer[] expected = {1, 2, 3, 4, 5}; @@ -42,7 +42,31 @@ public void add2Test(){ @Test public void getTest(){ - Integer[] input = {}; + Integer[] input = {1, 2, 3, 4, 5, 6}; + MyArrayList array = new MyArrayList<>(input); + Integer expected = 4; + Integer actual = array.get(3); + Assert.assertEquals(expected, actual); + } + + @Test + public void removeTest(){ + Integer[] input = {1,2,3,4,5}; + MyArrayList array = new MyArrayList<>(input); + Integer[] expected = {1,2,3,5}; + array.remove(3); + Integer[] actual = array.getMyArrayList(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void clearTest(){ + Integer[] input = {1,2,3,4,5}; + MyArrayList array = new MyArrayList<>(input); + Integer[] expected = {}; + array.clear(); + Integer[] actual = array.getMyArrayList(); + Assert.assertArrayEquals(expected, actual); } } From 01e79c28e8a565cee2a30ed366fb96e4cf5d8f28 Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Thu, 8 Mar 2018 21:37:25 -0500 Subject: [PATCH 03/15] Part one complete --- .idea/workspace.xml | 173 +++++++++--------- .../myarraylist/carolynn/MyArrayList.java | 32 +++- .../myarraylist/carolynn/MyArrayListTest.java | 26 +++ 3 files changed, 138 insertions(+), 93 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index dac180b..18320b0 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,7 +2,6 @@ - @@ -16,31 +15,31 @@ - + - - + + - + - - + + - - - - - - - + + + + + + + @@ -67,8 +66,8 @@ @@ -190,7 +189,7 @@ - + - + - + - + - + - + - - - - - + + + + + - - - - - + + + + + @@ -429,44 +428,44 @@ 1520539317479 - + - - - - - - - - - - - - - - + + - - + + + + + + + + + + + + + + - @@ -480,9 +479,9 @@ - + - + @@ -527,13 +526,13 @@ - - - - - - - + + + + + + + @@ -553,13 +552,13 @@ - - - - - - - + + + + + + + @@ -572,32 +571,32 @@ + + + + + + + + - - + + - - - - - - - + + + + + + + - - - - - - - - diff --git a/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java b/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java index ab6d2f6..7115bd7 100644 --- a/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java +++ b/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java @@ -5,17 +5,14 @@ public class MyArrayList { - protected T[] myArrayList; - - + private T[] myArrayList; public MyArrayList() { - this.myArrayList = (T[])new Array[0]; - + this.myArrayList = (T[])new Array[10]; } public MyArrayList( int size){ - myArrayList = (T[])new Array[size]; + this.myArrayList = (T[])new Array[size]; } public MyArrayList(T[] myArrayList) { @@ -78,4 +75,27 @@ public void clear(){ myArrayList = Arrays.copyOf(myArrayList, 0); } + public T set(T valueReplacing, int index){ + T replaced = null; + for(int i = 0; i array = new MyArrayList<>(input); + Integer expected = 2; + Integer actual = array.set(10,1); + Assert.assertEquals(expected, actual); + } + + @Test + public void containsTest(){ + Integer[] input = {1,2,3,4,5,6}; + MyArrayList array = new MyArrayList<>(input); + boolean expected = true; + boolean actual = array.contains(4); + Assert.assertEquals(expected, actual); + } + + @Test + public void isEmptyTest(){ + Integer[] input = {}; + MyArrayList array = new MyArrayList<>(input); + boolean expected = true; + boolean actual = array.isEmpty(); + Assert.assertEquals(expected, actual); + } } From 619e64d6e85a4e7530c72661de4455f6705ff24a Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Thu, 8 Mar 2018 22:52:05 -0500 Subject: [PATCH 04/15] added more methods to part 1, started part 2 --- .idea/workspace.xml | 245 +++++++++++------- .../myarraylist/carolynn/MyArrayList.java | 10 + .../myarraylist/carolynn/MySet.java | 15 ++ .../myarraylist/carolynn/MyArrayListTest.java | 22 +- .../myarraylist/carolynn/MySetTest.java | 16 ++ 5 files changed, 216 insertions(+), 92 deletions(-) create mode 100644 src/main/java/com/zipcodewilmington/myarraylist/carolynn/MySet.java create mode 100644 src/test/java/com/zipcodewilmington/myarraylist/carolynn/MySetTest.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 18320b0..2a74553 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,6 +2,7 @@ + @@ -18,28 +19,57 @@ - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - @@ -66,8 +96,10 @@ @@ -77,10 +109,10 @@ true DEFINITION_ORDER - + @@ -189,7 +221,7 @@ - + - + - + - + - + - + - - - - - + + + + + - - - - - + + + + + @@ -428,47 +460,47 @@ 1520539317479 - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + @@ -479,7 +511,7 @@ - + @@ -525,14 +557,18 @@ - - - - - - - - + + + + + + + + + + + + @@ -551,14 +587,18 @@ - - - - - - - - + + + + + + + + + + + + @@ -573,26 +613,51 @@ - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - diff --git a/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java b/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java index 7115bd7..dd11ac5 100644 --- a/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java +++ b/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java @@ -98,4 +98,14 @@ public boolean isEmpty(){ if (myArrayList.length == 0) return true; else return false; } + + public T[] subList(int from, int to){ + myArrayList = Arrays.copyOfRange(myArrayList, from, to); + return myArrayList; + } + + public int size(){ + return myArrayList.length; + } + } diff --git a/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MySet.java b/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MySet.java new file mode 100644 index 0000000..acd3b3a --- /dev/null +++ b/src/main/java/com/zipcodewilmington/myarraylist/carolynn/MySet.java @@ -0,0 +1,15 @@ +package com.zipcodewilmington.myarraylist.carolynn; + +import java.sql.Array; + +public class MySet { + + + + public MySet() { + + + } + + +} \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayListTest.java b/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayListTest.java index 32edb52..97e6d48 100644 --- a/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayListTest.java +++ b/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayListTest.java @@ -89,10 +89,28 @@ public void containsTest(){ @Test public void isEmptyTest(){ - Integer[] input = {}; - MyArrayList array = new MyArrayList<>(input); + String[] input = {}; + MyArrayList array = new MyArrayList<>(input); boolean expected = true; boolean actual = array.isEmpty(); Assert.assertEquals(expected, actual); } + + @Test + public void subListTest(){ + Integer[] input = {1,2,3,4,5,6,7}; + MyArrayList array = new MyArrayList<>(input); + Integer[] expected = {3,4,5}; + Integer[] actual = array.subList(2, 5); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void size(){ + Integer[] input = {1,2,3,4,5,6,7}; + MyArrayList array = new MyArrayList<>(input); + int expected = 7; + int actual = array.size(); + Assert.assertEquals(expected, actual); + } } diff --git a/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MySetTest.java b/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MySetTest.java new file mode 100644 index 0000000..9dcd34c --- /dev/null +++ b/src/test/java/com/zipcodewilmington/myarraylist/carolynn/MySetTest.java @@ -0,0 +1,16 @@ +package com.zipcodewilmington.myarraylist.carolynn; + +import org.junit.Assert; +import org.junit.Test; + +public class MySetTest { + + @Test + public void constructorTest(){ + String[] input = {"a", "b", "c", "a", "d"}; + MySet mySet = new MySet<>(input); + String[] expected = {"a", "b", "c", "d"}; + String[] actual = mySet.getMySet(); + Assert.assertArrayEquals(expected, actual); + } +} From 7c70a5e519410a488b6e35f39f2ef15ac0b3c446 Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Fri, 9 Mar 2018 23:23:17 -0500 Subject: [PATCH 05/15] finished arraylist, actually this time, and have set constructor and add tests and methods working --- .idea/compiler.xml | 4 +- .idea/kotlinc.xml | 6 + .idea/workspace.xml | 597 +++++++++++------- generics.iml | 2 +- pom.xml | 4 +- src/main/java/MyArrayList.java | 128 ++++ src/main/java/MySet.java | 25 + .../myarraylist/carolynn/MyArrayList.java | 111 ---- .../myarraylist/carolynn/MySet.java | 15 - .../carolynn => }/MyArrayListTest.java | 35 +- src/test/java/MySetTest.java | 27 + .../myarraylist/carolynn/MySetTest.java | 16 - 12 files changed, 597 insertions(+), 373 deletions(-) create mode 100644 .idea/kotlinc.xml create mode 100644 src/main/java/MyArrayList.java create mode 100644 src/main/java/MySet.java delete mode 100644 src/main/java/com/zipcodewilmington/myarraylist/carolynn/MyArrayList.java delete mode 100644 src/main/java/com/zipcodewilmington/myarraylist/carolynn/MySet.java rename src/test/java/{com/zipcodewilmington/myarraylist/carolynn => }/MyArrayListTest.java (77%) create mode 100644 src/test/java/MySetTest.java delete mode 100644 src/test/java/com/zipcodewilmington/myarraylist/carolynn/MySetTest.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index c20d346..fa6e49d 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -9,8 +9,8 @@ - - + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..0dd4b35 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 2a74553..8faa87c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,9 +2,16 @@ + + + - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + + + - + - - - - - + + + @@ -95,22 +68,36 @@ + + true + + true + true + true DEFINITION_ORDER - - @@ -230,7 +289,7 @@ - + - + - + - + - + - - - - - + + + + + - - - - - + + + + + @@ -446,25 +505,23 @@ - + + - - + + - - + + - - + + - - - - - + + @@ -481,9 +538,12 @@ + + + - @@ -491,31 +551,31 @@ - + - - + + - + + - + - @@ -531,24 +591,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -610,18 +727,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + @@ -675,18 +792,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + @@ -705,18 +822,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + @@ -728,17 +845,6 @@ - - - - - - - - - - - @@ -746,18 +852,11 @@ - - - - - - - + - @@ -765,7 +864,6 @@ - @@ -773,7 +871,6 @@ - @@ -781,7 +878,6 @@ - @@ -789,7 +885,6 @@ - @@ -797,7 +892,6 @@ - @@ -805,7 +899,6 @@ - @@ -817,40 +910,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + - - + + @@ -874,11 +998,59 @@ - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/KeyValuePair.java b/src/main/java/KeyValuePair.java new file mode 100644 index 0000000..4cdce65 --- /dev/null +++ b/src/main/java/KeyValuePair.java @@ -0,0 +1,28 @@ +public class KeyValuePair { + + + protected K key; + protected V value; + + + public KeyValuePair(K key, V value) { + this.key = key; + this.value = value; + } + + public void setKey(K key) { + this.key = key; + } + + public void setValue(V value) { + this.value = value; + } + + public K getKey() { + return key; + } + + public V getValue() { + return value; + } +} diff --git a/src/main/java/MyArrayList.java b/src/main/java/MyArrayList.java index 0e5a8ad..8593075 100644 --- a/src/main/java/MyArrayList.java +++ b/src/main/java/MyArrayList.java @@ -8,6 +8,7 @@ public class MyArrayList { private T[] myArrayList; + public MyArrayList(int size) { this.myArrayList = (T[]) new Object[size]; } @@ -20,6 +21,7 @@ public MyArrayList() { this.myArrayList =(T[]) new Object[0]; } + public T[] getMyArrayList() { return this.myArrayList; } @@ -124,5 +126,13 @@ public Integer countDupes(int index){ return count; } + public Integer countDuplicateKeys(KeyValuePair key){ + Integer count = 0; + for(int i = 0; i { + + protected MyArrayList> myMap; + + public MyMap(){ + this.myMap = new MyArrayList<>(16); + } + + public MyMap(int size){ + this.myMap = new MyArrayList<>(size); + } + + +/** public void setMyMap(Object[] input) { + this.myMap = new MyArrayList<>(input); + for(int i = 0; i1) { + myMap.remove(i); + } + } + }*/ + + public MyArrayList getMyMap() { + return myMap; + } + +} diff --git a/src/test/java/KeyValuePairTest.java b/src/test/java/KeyValuePairTest.java new file mode 100644 index 0000000..305a65d --- /dev/null +++ b/src/test/java/KeyValuePairTest.java @@ -0,0 +1,18 @@ +import org.junit.Assert; +import org.junit.Test; + +public class KeyValuePairTest { + @Test + public void constructorTest(){ + String k = "Key"; + Integer v = 5; + KeyValuePair myPair = new KeyValuePair<>(k, v); + String expectedKey = "Key"; + Integer expectedValue = 5; + String actualKey = myPair.getKey(); + Integer actualValue = myPair.getValue(); + Assert.assertEquals(expectedKey, actualKey); + Assert.assertEquals(expectedValue, actualValue); + + } +} diff --git a/src/test/java/MyMapTest.java b/src/test/java/MyMapTest.java new file mode 100644 index 0000000..919570c --- /dev/null +++ b/src/test/java/MyMapTest.java @@ -0,0 +1,25 @@ +import org.junit.Assert; +import org.junit.Test; + +public class MyMapTest { + + @Test + public void constructorTest(){ + MyMap myMap = new MyMap<>(); + int expected = 16; + int actual = myMap.getMyMap().size(); + Assert.assertEquals(expected, actual); + } + + @Test + public void addTest(){ + MyMap myMap = new MyMap<>(); + String k = "Key"; + Integer v = 5; + KeyValuePair myPair = new KeyValuePair<>(k, v); + MyArrayList> expected = new MyArrayList(myPair); + myMap.add(myPair); + MyArrayList actual = myMap.getMyMap(); + } + +} diff --git a/src/test/java/MySetTest.java b/src/test/java/MySetTest.java index bcb0af6..9ae5aa8 100644 --- a/src/test/java/MySetTest.java +++ b/src/test/java/MySetTest.java @@ -1,4 +1,5 @@ + import org.junit.Assert; import org.junit.Test; From 568f44895651139b8a40f8d781a2400f0a089abd Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Sat, 10 Mar 2018 17:35:37 -0500 Subject: [PATCH 08/15] part one and two done, challenge unfinished but now code will compile --- src/test/java/MyMapTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/MyMapTest.java b/src/test/java/MyMapTest.java index 919570c..89f28c0 100644 --- a/src/test/java/MyMapTest.java +++ b/src/test/java/MyMapTest.java @@ -11,7 +11,7 @@ public void constructorTest(){ Assert.assertEquals(expected, actual); } - @Test +/* @Test public void addTest(){ MyMap myMap = new MyMap<>(); String k = "Key"; @@ -21,5 +21,5 @@ public void addTest(){ myMap.add(myPair); MyArrayList actual = myMap.getMyMap(); } - +*/ } From cdc1226c739d4c70d61291e6842e523efa151ad9 Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Sat, 2 Jun 2018 22:03:56 -0400 Subject: [PATCH 09/15] added methods, refactored others --- .idea/misc.xml | 2 +- .idea/workspace.xml | 870 +++++++++++++---------------- src/main/java/KeyValuePair.java | 8 + src/main/java/MyArrayList.java | 73 ++- src/main/java/MyMap.java | 58 +- src/main/java/MySet.java | 22 +- src/test/java/MyArrayListTest.java | 32 +- src/test/java/MyMapTest.java | 27 +- src/test/java/MySetTest.java | 86 ++- 9 files changed, 627 insertions(+), 551 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index d30d09e..dc02d2a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -7,7 +7,7 @@ - + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index fc10d5c..01b8d11 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,9 +2,15 @@ - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - + + - - + + - - + + - - - - - - - - + - - + + - - - - - + + - - + + - - + + + + + + @@ -141,11 +89,6 @@ - - - @@ -183,26 +126,19 @@ true DEFINITION_ORDER - + + + + - - - - - - - - - - - + @@ -253,20 +189,19 @@ - - - + + @@ -289,131 +224,99 @@ - + - - - - - + - - - + - - - + - - - + - - - + - - - - - - - - - - - - - - - - - + + + + + + - - - - - - + + + + + + - - $USER_HOME$/.subversion @@ -507,75 +387,78 @@ + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586,29 +469,162 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + @@ -616,26 +632,15 @@ - + - - - - - - - - - - - - - + + @@ -643,29 +648,23 @@ - - + + + + - + - - - - - - - - - - - - + + + + @@ -673,16 +672,17 @@ - - + - - + + + + @@ -695,20 +695,9 @@ - - - - - - - - - - - - - + + @@ -716,29 +705,20 @@ - - + - + - - - - - - - - - - - - + + + + @@ -747,33 +727,24 @@ - + + + - + - - - - - - - - - - - - - + + @@ -781,59 +752,37 @@ - - + - + - - - - - - - - - - - - + + + + - - - - - - + - + - - - - - - - - - - - - + + + + @@ -841,14 +790,14 @@ - + - - + + @@ -856,201 +805,166 @@ - + - - - - - + - + - - - - - + - - - - - + - + - + - - + - - - - + - - - - - - - - - + + + - - + - + - - - + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - - - - - + + - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - + - - + + - + - - + + - - - - - - - - + + + + + - + - - - - - + + diff --git a/src/main/java/KeyValuePair.java b/src/main/java/KeyValuePair.java index 4cdce65..e2afed9 100644 --- a/src/main/java/KeyValuePair.java +++ b/src/main/java/KeyValuePair.java @@ -25,4 +25,12 @@ public K getKey() { public V getValue() { return value; } + + public boolean equalTo(K key1){ + if(key.equals(key1)){ + return true; + } + return false; + } + } diff --git a/src/main/java/MyArrayList.java b/src/main/java/MyArrayList.java index 8593075..bd689ab 100644 --- a/src/main/java/MyArrayList.java +++ b/src/main/java/MyArrayList.java @@ -1,5 +1,6 @@ +import java.lang.reflect.Array; import java.util.Arrays; import java.lang.*; @@ -27,10 +28,8 @@ public T[] getMyArrayList() { } public void add(T toBeAdded) { - int mid = myArrayList.length + 1; - T[] tempArray = Arrays.copyOf(myArrayList, mid); - tempArray[tempArray.length - 1] = toBeAdded; - myArrayList = Arrays.copyOf(tempArray, tempArray.length); + myArrayList = Arrays.copyOf(myArrayList, myArrayList.length + 1); + myArrayList[myArrayList.length - 1] = toBeAdded; } public void add(int index, T toBeAdded) { @@ -48,13 +47,23 @@ public void add(int index, T toBeAdded) { newArray[i] = myArrayList[i - 1]; } } - myArrayList = Arrays.copyOf(newArray, newArray.length); } } + public void addAll(T[] toBeAdded){ + int x = toBeAdded.length; + int y = myArrayList.length; + int counter = 0; + myArrayList = Arrays.copyOf(myArrayList, myArrayList.length+x); + for(int i = y; i= index) { + if (i >= index) { if (i == myArrayList.length - 1) { - tempArray[i] = null; + myArrayList[i] = null; } else { - tempArray[i] = myArrayList[i + 1]; + myArrayList[i] = myArrayList[i + 1]; } } } - myArrayList = Arrays.copyOf(tempArray, tempArray.length - 1); - } + myArrayList = Arrays.copyOf(myArrayList, tempArray.length - 1); + } + +// public void removeAll(T[] toBeRemoved){ +// for(T myItem: myArrayList) +// for(T toRemove: toBeRemoved){ +// if(myItem.equals(toRemove)){ +// myItem = null; +// } +// } +// int count = 0; +// for(int i = 0; i { - protected MyArrayList> myMap; + private KeyValuePair pair; + protected MyArrayList> myMap; + K key; + V value; public MyMap(){ this.myMap = new MyArrayList<>(16); @@ -12,19 +15,52 @@ public MyMap(int size){ this.myMap = new MyArrayList<>(size); } + public MyMap(MyArrayList> myMap){ + this.myMap = myMap; + } + + public void setMyMap(MyArrayList> myMap) { + this.myMap = myMap; + } + + public MyArrayList> getMyMap() { + return myMap; + } -/** public void setMyMap(Object[] input) { - this.myMap = new MyArrayList<>(input); - for(int i = 0; i1) { - myMap.remove(i); + public void add(KeyValuePair value){ + for(int i=0; i[] toArray(){ + return myMap.getMyArrayList(); + } + + + + } diff --git a/src/main/java/MySet.java b/src/main/java/MySet.java index bb4b11b..f59b74f 100644 --- a/src/main/java/MySet.java +++ b/src/main/java/MySet.java @@ -14,8 +14,8 @@ public MySet(int size) { this.mySet = new MyArrayList<>(size); } - public MySet(T[] setInput) { - this.mySet = new MyArrayList<>(setInput); + public MySet(MyArrayList setInput) { + this.mySet = setInput; for(int i = 0; i1){ mySet.remove(i); @@ -23,14 +23,18 @@ public MySet(T[] setInput) { } } - public T[] getMySet() { - return mySet.getMyArrayList(); + public MyArrayList getMySet() { + return mySet; } public void add(T value){ if(!mySet.contains(value)) mySet.add(value); } + public void add(int index, T value){ + if(!mySet.contains(value)) mySet.add(index, value); + } + public void remove(int index){ mySet.remove(index); } @@ -39,6 +43,10 @@ public int size(){ return mySet.size(); } + public T[] toArray(){ + return mySet.getMyArrayList(); + } + public boolean contains(T value){ return mySet.contains(value); } @@ -51,4 +59,10 @@ public void clear(){ mySet.clear(); } + public T get(int index){ + return mySet.get(index); + } + + + } \ No newline at end of file diff --git a/src/test/java/MyArrayListTest.java b/src/test/java/MyArrayListTest.java index 036d0a0..feb00a6 100644 --- a/src/test/java/MyArrayListTest.java +++ b/src/test/java/MyArrayListTest.java @@ -22,11 +22,11 @@ public void constructor2Test(){ @Test public void addTest(){ String[] input = {"1", "2", "3", "4"}; - MyArrayList it = new MyArrayList<>(); + MyArrayList it = new MyArrayList<>(input); String toBeAdded = "5"; - Object[] expected = {"5"}; + String[] expected = {"1","2","3","4","5"}; it.add(toBeAdded); - Object[] actual = it.getMyArrayList(); + String[] actual = it.getMyArrayList(); Assert.assertArrayEquals(expected, actual); } @@ -34,7 +34,7 @@ public void addTest(){ public void add3Test(){ MyArrayList myArray = new MyArrayList<>(); Integer toBeAdded = 5; - Object[] expected = {5}; + Integer[] expected = {5}; myArray.add(toBeAdded); Object[] actual = myArray.getMyArrayList(); Assert.assertArrayEquals(expected, actual); @@ -52,6 +52,30 @@ public void add2Test(){ Assert.assertArrayEquals(expected, it); } + @Test + public void addAllTest(){ + Integer[] input = {1,2,3,4,5}; + MyArrayList id = new MyArrayList<>(input); + Integer[] toAdd = {6,7,8}; + id.addAll(toAdd); + Integer [] expected = {1,2,3,4,5,6,7,8}; + Integer[] actual = id.getMyArrayList(); + + Assert.assertArrayEquals(expected, actual); + } + +// @Test +// public void removeAllTest(){ +// Integer[] input ={1,2,3,4,5,6,7,8}; +// MyArrayList id = new MyArrayList<>(input); +// Integer[] toRemove = {2,4,6,8}; +// id.removeAll(toRemove); +// Integer[] actual = id.getMyArrayList(); +// Integer[] expected = {1,3,5,7}; +// +// Assert.assertArrayEquals(expected, actual); +// } + @Test public void getTest(){ Integer[] input = {1, 2, 3, 4, 5, 6}; diff --git a/src/test/java/MyMapTest.java b/src/test/java/MyMapTest.java index 89f28c0..d4eb263 100644 --- a/src/test/java/MyMapTest.java +++ b/src/test/java/MyMapTest.java @@ -1,6 +1,8 @@ import org.junit.Assert; import org.junit.Test; +import java.util.Arrays; + public class MyMapTest { @Test @@ -11,15 +13,22 @@ public void constructorTest(){ Assert.assertEquals(expected, actual); } -/* @Test + @Test public void addTest(){ - MyMap myMap = new MyMap<>(); - String k = "Key"; - Integer v = 5; - KeyValuePair myPair = new KeyValuePair<>(k, v); - MyArrayList> expected = new MyArrayList(myPair); - myMap.add(myPair); - MyArrayList actual = myMap.getMyMap(); + KeyValuePair keyValue1 = new KeyValuePair<>("Key",5); + KeyValuePair keyValue2 = new KeyValuePair<>("Carolynn", 100); + KeyValuePair keyValue3 = new KeyValuePair<>("Luis",100); + KeyValuePair [] keyValueArray = new KeyValuePair[3]; + keyValueArray[0] = keyValue1; + keyValueArray[1] = new KeyValuePair<>("Id",7); + MyArrayList> myArrayList = new MyArrayList<>(keyValueArray); + MyMap myMap = new MyMap<>(myArrayList); + myMap.add(keyValue3); + KeyValuePair[] actual = myMap.toArray(); + KeyValuePair[] expected = new KeyValuePair []{keyValue1,keyValue2,keyValue3}; + + Assert.assertArrayEquals(expected,actual); + } -*/ + } diff --git a/src/test/java/MySetTest.java b/src/test/java/MySetTest.java index 9ae5aa8..d7bb14d 100644 --- a/src/test/java/MySetTest.java +++ b/src/test/java/MySetTest.java @@ -3,14 +3,17 @@ import org.junit.Assert; import org.junit.Test; +import java.util.Arrays; public class MySetTest { @Test public void constructorTest(){ - String[] input = {"a", "b", "c", "a", "d", "a"}; + String[] in = new String[]{"a","b","c", "d"}; + MyArrayList input = new MyArrayList<>(in); MySet mySet = new MySet<>(input); int expected = 4; int actual = mySet.size(); + Assert.assertEquals(expected, actual); } @Test @@ -18,8 +21,8 @@ public void constructor2Test(){ MySet mySet = new MySet<>(); int expected = 16; int actual = mySet.size(); - Assert.assertEquals(expected, actual); + Assert.assertEquals(expected, actual); } @Test @@ -32,30 +35,60 @@ public void constructor3Test(){ @Test public void addTest(){ - Integer[] input = {1,2,3,4,6}; + Integer[] in = {1,2,3,4,6}; + MyArrayList input = new MyArrayList<>(in); MySet mySet = new MySet<>(input); Integer toBeAdded = 6; - Object[] expected = {1,2,3,4,6}; + MyArrayList expected = input; + mySet.add(toBeAdded); + MyArrayList actual = mySet.getMySet(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void add2Test(){ + Integer[] in = {1,2,3,4,6}; + MyArrayList input = new MyArrayList<>(in); + MySet mySet = new MySet<>(input); + Integer toBeAdded = 7; + Integer[] expected = {1,2,3,4,6,7}; mySet.add(toBeAdded); - Object[] actual = mySet.getMySet(); + Integer[] actual = mySet.toArray(); + + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void add3Test(){ + Integer[] in = {1,2,3,4,6}; + MyArrayList input = new MyArrayList<>(in); + MySet mySet = new MySet<>(input); + Integer toBeAdded = 7; + Integer[] expected = {1,2,7,3,4,6}; + mySet.add(2, toBeAdded); + Integer[] actual = mySet.toArray(); + Assert.assertArrayEquals(expected, actual); } @Test public void removeTest(){ Integer[] input = {1,2,3,4,5}; - MySet mySet = new MySet<>(input); + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); int index = 2; - Object[] expected = {1,2,4,5}; mySet.remove(index); - Object[] actual = mySet.getMySet(); - Assert.assertArrayEquals(expected, actual); + Integer[] expected = {1,2,4,5}; + Integer[] actual = mySet.toArray(); + Assert.assertArrayEquals(expected,actual); } @Test public void sizeTest(){ Integer[] input = {1,2,3,4,5}; - MySet mySet = new MySet<>(input); + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); int expected = 5; int actual = mySet.size(); Assert.assertEquals(expected, actual); @@ -64,39 +97,58 @@ public void sizeTest(){ @Test public void containsTest(){ Integer[] input = {1,2,3,4,5}; - MySet mySet = new MySet<>(input); + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); boolean expected = true; boolean actual = mySet.contains(3); + Assert.assertEquals(expected, actual); } @Test public void isEmptyTest(){ Integer[] input = {4}; - MySet mySet = new MySet<>(input); + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); boolean expected = false; boolean actual = mySet.isEmpty(); + Assert.assertEquals(expected, actual); } @Test public void isEmpty2Test(){ Integer[] input = {}; - MySet mySet = new MySet<>(input); + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); boolean expected = true; boolean actual = mySet.isEmpty(); - Assert.assertEquals(expected, actual); + Assert.assertEquals(expected, actual); } @Test public void clearTest(){ Integer[] input = {1,2,3,4,5}; - MySet mySet = new MySet<>(input); - Object[] expected = {}; + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); + Integer[] expected = {}; mySet.clear(); - Object[] actual = mySet.getMySet(); + Integer[] actual = mySet.toArray(); + Assert.assertArrayEquals(expected, actual); } + @Test + public void getTest(){ + Integer[] input = {1,2,3,4,5}; + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); + Integer actual = mySet.get(1); + Integer expected = 2; + + Assert.assertEquals(expected, actual); + } + + } From a364e3cae9bd5167aa00ab182326d8fe7cc50eef Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Wed, 4 Jul 2018 12:14:01 -0400 Subject: [PATCH 10/15] added more methods and their unit tests --- .idea/workspace.xml | 700 ++++++++++++------ README.md | 26 +- src/main/java/MyArrayList.java | 157 ---- src/main/java/MySet.java | 68 -- .../generics/myArrayList}/KeyValuePair.java | 2 + .../io/generics/myArrayList/MyArrayList.java | 244 ++++++ .../{ => io/generics/myArrayList}/MyMap.java | 3 +- .../java/io/generics/myArrayList/MySet.java | 98 +++ .../myArrayList}/KeyValuePairTest.java | 2 + .../myArrayList}/MyArrayListTest.java | 113 ++- .../generics/myArrayList}/MyMapTest.java | 4 +- .../generics/myArrayList}/MySetTest.java | 38 +- 12 files changed, 945 insertions(+), 510 deletions(-) delete mode 100644 src/main/java/MyArrayList.java delete mode 100644 src/main/java/MySet.java rename src/main/java/{ => io/generics/myArrayList}/KeyValuePair.java (94%) create mode 100644 src/main/java/io/generics/myArrayList/MyArrayList.java rename src/main/java/{ => io/generics/myArrayList}/MyMap.java (97%) create mode 100644 src/main/java/io/generics/myArrayList/MySet.java rename src/test/java/{ => io/generics/myArrayList}/KeyValuePairTest.java (93%) rename src/test/java/{ => io/generics/myArrayList}/MyArrayListTest.java (62%) rename src/test/java/{ => io/generics/myArrayList}/MyMapTest.java (97%) rename src/test/java/{ => io/generics/myArrayList}/MySetTest.java (85%) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 01b8d11..7ed7f2e 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,15 +2,16 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -205,6 +268,7 @@ + @@ -231,13 +295,19 @@ - + + + + + - + + + + + - + + + + + - + + + + + - + + + + + - - - - + + + + - - - - + + + + @@ -388,77 +482,84 @@ - + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + + - + - - @@ -469,11 +570,46 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -482,14 +618,29 @@ - - - + + + + + + + + + + + + + + + + + + - + @@ -499,42 +650,50 @@ - + - + - - - - + + + + + + + + - + - - - - + + + + + + + + - + @@ -565,7 +724,7 @@ - + @@ -574,62 +733,68 @@ - - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + - + - - - - + - - - - + + + + + + + + - + @@ -638,14 +803,29 @@ - - - + + + + + + + + + + + + + + + + + + - + @@ -655,28 +835,32 @@ - + - - - - + + + + + + + + - + - + @@ -686,7 +870,7 @@ - + @@ -695,35 +879,54 @@ - - - + + + + + + + + + + + + + + + + + + - + - + - - - - + + + + + + + + - + @@ -733,7 +936,7 @@ - + @@ -742,47 +945,70 @@ - - - + + + + + + + + + + + + + + + + + + - + - + - - - - + + + + + + + + - + - + - - - - + + + + + + + + @@ -856,115 +1082,113 @@ - + - - + + - + - - + + - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - + + - + - - + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + - + - - + + - + - - + + - - - - - + - - + + + + + + + + + + + + + diff --git a/README.md b/README.md index 6f607c0..c566681 100644 --- a/README.md +++ b/README.md @@ -14,26 +14,26 @@ As always, you are required to produce UML and unit tests as well as your code t ### Part 1: -Implement your own version of an ArrayList (we'll call it MyArrayList), with the following features: +Implement your own version of an ArrayList (we'll call it io.generics.myArrayList.MyArrayList), with the following features: -- MyArrayList must be a generic type, which can store any other type of object -- MyArrayList must not use List, ArrayList or any other collection type in its implementation, only Arrays (The purpose of this is to practice designing your own generic class from the ground up, so that you can appreciate their complexities and usefulness) -- MyArrayList must have `add()`, `get()`, `remove()`, `set()`, `clear()`, `isEmpty()`, `contains()` and other methods to provide the same basic functionality described in the [ArrayList documentation](https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) +- io.generics.myArrayList.MyArrayList must be a generic type, which can store any other type of object +- io.generics.myArrayList.MyArrayList must not use List, ArrayList or any other collection type in its implementation, only Arrays (The purpose of this is to practice designing your own generic class from the ground up, so that you can appreciate their complexities and usefulness) +- io.generics.myArrayList.MyArrayList must have `add()`, `get()`, `remove()`, `set()`, `clear()`, `isEmpty()`, `contains()` and other methods to provide the same basic functionality described in the [ArrayList documentation](https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) - `add()` should be overridden to add an element to the end of the Array, or to add the element to a specified index in the array. -- MyArrayList must have a no-argument constructor (`MyArrayList()`) to initialize a new instance, it should also have a one-argument constructor (`MyArrayList(int)`) that takes an int and starts the list off at the specified size. -- MyArrayList should automatically resize and maintain its order. +- io.generics.myArrayList.MyArrayList must have a no-argument constructor (`io.generics.myArrayList.MyArrayList()`) to initialize a new instance, it should also have a one-argument constructor (`io.generics.myArrayList.MyArrayList(int)`) that takes an int and starts the list off at the specified size. +- io.generics.myArrayList.MyArrayList should automatically resize and maintain its order. ### Part 2: -Implement your own version of a Set (let's call it MySet ... seeing a pattern here?), with the following features: +Implement your own version of a Set (let's call it io.generics.myArrayList.MySet ... seeing a pattern here?), with the following features: -- MySet must be a generic type, which can store any other type of object -- An instance of MySet must contain no duplicates -- MySet must not use List, ArrayList, or any other built-in collection types in its implementation. You may use Arrays, and you may use your implementation of MyArrayList (if it helps -- you don't have to use it) -- MySet must have all of the methods listed on the [Java Set documentation](https://docs.oracle.com/javase/7/docs/api/java/util/Set.html) +- io.generics.myArrayList.MySet must be a generic type, which can store any other type of object +- An instance of io.generics.myArrayList.MySet must contain no duplicates +- io.generics.myArrayList.MySet must not use List, ArrayList, or any other built-in collection types in its implementation. You may use Arrays, and you may use your implementation of io.generics.myArrayList.MyArrayList (if it helps -- you don't have to use it) +- io.generics.myArrayList.MySet must have all of the methods listed on the [Java Set documentation](https://docs.oracle.com/javase/7/docs/api/java/util/Set.html) ### Part 3 (Challenge): -Implement your own version of a Map (MyMap) as a generic type that can map any key type to any value type. +Implement your own version of a Map (io.generics.myArrayList.MyMap) as a generic type that can map any key type to any value type. -MyMap should implement all of the methods and behavior described in the [Java Map documentation](https://docs.oracle.com/javase/7/docs/api/java/util/Map.html). +io.generics.myArrayList.MyMap should implement all of the methods and behavior described in the [Java Map documentation](https://docs.oracle.com/javase/7/docs/api/java/util/Map.html). diff --git a/src/main/java/MyArrayList.java b/src/main/java/MyArrayList.java deleted file mode 100644 index bd689ab..0000000 --- a/src/main/java/MyArrayList.java +++ /dev/null @@ -1,157 +0,0 @@ - - -import java.lang.reflect.Array; -import java.util.Arrays; -import java.lang.*; - - -public class MyArrayList { - - private T[] myArrayList; - - - public MyArrayList(int size) { - this.myArrayList = (T[]) new Object[size]; - } - - public MyArrayList(T[] myArrayList) { - this.myArrayList = myArrayList; - } - - public MyArrayList() { - this.myArrayList =(T[]) new Object[0]; - } - - - public T[] getMyArrayList() { - return this.myArrayList; - } - - public void add(T toBeAdded) { - myArrayList = Arrays.copyOf(myArrayList, myArrayList.length + 1); - myArrayList[myArrayList.length - 1] = toBeAdded; - } - - public void add(int index, T toBeAdded) { - if (myArrayList.length == 0) { - myArrayList = Arrays.copyOf(myArrayList, myArrayList.length + 1); - myArrayList[0] = toBeAdded; - } else { - T[] newArray = Arrays.copyOf(myArrayList, myArrayList.length + 1); - for (int i = 0; i < newArray.length; i++) { - if (i < index) { - newArray[i] = myArrayList[i]; - } else if (i == index) { - newArray[i] = toBeAdded; - } else if (i > index) { - newArray[i] = myArrayList[i - 1]; - } - } - myArrayList = Arrays.copyOf(newArray, newArray.length); - } - } - - public void addAll(T[] toBeAdded){ - int x = toBeAdded.length; - int y = myArrayList.length; - int counter = 0; - myArrayList = Arrays.copyOf(myArrayList, myArrayList.length+x); - for(int i = y; i= index) { - if (i == myArrayList.length - 1) { - myArrayList[i] = null; - } else { - myArrayList[i] = myArrayList[i + 1]; - } - } - } - myArrayList = Arrays.copyOf(myArrayList, tempArray.length - 1); - } - -// public void removeAll(T[] toBeRemoved){ -// for(T myItem: myArrayList) -// for(T toRemove: toBeRemoved){ -// if(myItem.equals(toRemove)){ -// myItem = null; -// } -// } -// int count = 0; -// for(int i = 0; i { - - private MyArrayList mySet; - - public MySet() { - this.mySet = new MyArrayList<>(16); - } - - public MySet(int size) { - this.mySet = new MyArrayList<>(size); - } - - public MySet(MyArrayList setInput) { - this.mySet = setInput; - for(int i = 0; i1){ - mySet.remove(i); - } - } - } - - public MyArrayList getMySet() { - return mySet; - } - - public void add(T value){ - if(!mySet.contains(value)) mySet.add(value); - } - - public void add(int index, T value){ - if(!mySet.contains(value)) mySet.add(index, value); - } - - public void remove(int index){ - mySet.remove(index); - } - - public int size(){ - return mySet.size(); - } - - public T[] toArray(){ - return mySet.getMyArrayList(); - } - - public boolean contains(T value){ - return mySet.contains(value); - } - - public boolean isEmpty(){ - return mySet.isEmpty(); - } - - public void clear(){ - mySet.clear(); - } - - public T get(int index){ - return mySet.get(index); - } - - - -} \ No newline at end of file diff --git a/src/main/java/KeyValuePair.java b/src/main/java/io/generics/myArrayList/KeyValuePair.java similarity index 94% rename from src/main/java/KeyValuePair.java rename to src/main/java/io/generics/myArrayList/KeyValuePair.java index e2afed9..30ebfdf 100644 --- a/src/main/java/KeyValuePair.java +++ b/src/main/java/io/generics/myArrayList/KeyValuePair.java @@ -1,3 +1,5 @@ +package io.generics.myArrayList; + public class KeyValuePair { diff --git a/src/main/java/io/generics/myArrayList/MyArrayList.java b/src/main/java/io/generics/myArrayList/MyArrayList.java new file mode 100644 index 0000000..397f2d7 --- /dev/null +++ b/src/main/java/io/generics/myArrayList/MyArrayList.java @@ -0,0 +1,244 @@ +package io.generics.myArrayList; + +import java.util.Arrays; +import java.lang.*; + + +public class MyArrayList { + + private T[] myArrayList; + + + public MyArrayList(int size) { + this.myArrayList = (T[]) new Object[size]; + } + + public MyArrayList(T[] myArrayList) { + this.myArrayList = myArrayList; + } + + public MyArrayList() { + this.myArrayList = (T[]) new Object[0]; + } + + + public T[] getMyArrayList() { + return this.myArrayList; + } + + public boolean add(T toBeAdded) { + myArrayList = Arrays.copyOf(myArrayList, myArrayList.length + 1); + myArrayList[myArrayList.length - 1] = toBeAdded; + return true; + } + + public boolean add(int index, T toBeAdded) { + if (myArrayList.length == 0) { + myArrayList = Arrays.copyOf(myArrayList, myArrayList.length + 1); + myArrayList[0] = toBeAdded; + } else { + T[] newArray = Arrays.copyOf(myArrayList, myArrayList.length + 1); + for (int i = 0; i < newArray.length; i++) { + if (i < index) { + newArray[i] = myArrayList[i]; + } else if (i == index) { + newArray[i] = toBeAdded; + } else if (i > index) { + newArray[i] = myArrayList[i - 1]; + } + } + myArrayList = Arrays.copyOf(newArray, newArray.length); + } + return true; + } + + public boolean addAll(T[] toBeAdded) { + int x = toBeAdded.length; + int y = myArrayList.length; + int counter = 0; + myArrayList = Arrays.copyOf(myArrayList, myArrayList.length + x); + for (int i = y; i < myArrayList.length; i++) { + myArrayList[i] = toBeAdded[counter]; + counter++; + } + return true; + } + + public boolean addAll(int index, T[] toBeAdded){ + T[] tempArray = Arrays.copyOf(myArrayList, myArrayList.length + toBeAdded.length); + int x = 0; + for(int i = 0; i= index){ + tempArray[i] = toBeAdded[x]; + tempArray[myArrayList.length+x] = myArrayList[i]; + x++; + } + } + myArrayList = Arrays.copyOf(tempArray, tempArray.length); + return true; + } + + public T get(int index) { + T temp = myArrayList[0]; + for (int i = 0; i < myArrayList.length; i++) { + if (i == index) { + temp = myArrayList[i]; + } + } + return temp; + } + + public boolean remove(int index) { + T[] tempArray = Arrays.copyOf(myArrayList, myArrayList.length); + for (int i = 0; i < myArrayList.length; i++) { + if (i >= index) { + if (i == myArrayList.length - 1) { + myArrayList[i] = null; + } else { + myArrayList[i] = myArrayList[i + 1]; + } + } + } + myArrayList = Arrays.copyOf(myArrayList, tempArray.length - 1); + return true; + } + + public boolean remove(T object){ + boolean isPresent = false; + int indexOfRemoved = 0; + for(int i = 0; i< myArrayList.length; i++){ + if(myArrayList[i].equals(object)){ + myArrayList[i] = myArrayList[i+1]; + indexOfRemoved = i+1; + } + if(indexOfRemoved != 0 && i=0; i--){ + if(myArrayList[i].equals(value)){ + x=i; + break; + } + } + return x; + } + + public T[] toArray(T[] array){ + myArrayList = array; + return myArrayList; + } + + public Object[] toArray(){ + return myArrayList; + } + + + public Integer countDupes(int index){ + Integer count = 0; + T val = myArrayList[index]; + for(int i = 0; i { diff --git a/src/main/java/io/generics/myArrayList/MySet.java b/src/main/java/io/generics/myArrayList/MySet.java new file mode 100644 index 0000000..702ce9b --- /dev/null +++ b/src/main/java/io/generics/myArrayList/MySet.java @@ -0,0 +1,98 @@ +package io.generics.myArrayList; + + +import java.util.Arrays; + +public class MySet { + + private MyArrayList mySet; + + public MySet() { + this.mySet = new MyArrayList<>(16); + } + + public MySet(int size) { + this.mySet = new MyArrayList<>(size); + } + + public MySet(MyArrayList setInput) { + this.mySet = setInput; + for(int i = 0; i1){ + mySet.remove(i); + } + } + } + + public MyArrayList getMySet() { + return mySet; + } + + public boolean add(T value){ + if(!mySet.contains(value)) { + mySet.add(value); + } + return true; + } + + public boolean add(int index, T value){ + if(!mySet.contains(value)) { + mySet.add(index, value); + } + return true; + } + + public boolean addAll(T[] toBeAdded){ + mySet.addAll(toBeAdded); + return true; + } + + public boolean addAll(int index, T[] toBeAdded){ + mySet.addAll(index, toBeAdded); + return true; + } + + public boolean remove(int index){ + mySet.remove(index); + return true; + } + + public boolean retainAll(T[] array){ + return true; + } + + public int size(){ + return mySet.size(); + } + + public T[] toArray(){ + return mySet.getMyArrayList(); + } + + public T[] toArray(T[] array){ + return mySet.toArray(array); + } + + public boolean contains(T value){ + return mySet.contains(value); + } + + public boolean isEmpty(){ + return mySet.isEmpty(); + } + + public void clear(){ + mySet.clear(); + } + + + public T set(int index, T object){ + return mySet.set(index, object); + } + + @Override + public String toString(){ + return String.valueOf(mySet); + } + +} \ No newline at end of file diff --git a/src/test/java/KeyValuePairTest.java b/src/test/java/io/generics/myArrayList/KeyValuePairTest.java similarity index 93% rename from src/test/java/KeyValuePairTest.java rename to src/test/java/io/generics/myArrayList/KeyValuePairTest.java index 305a65d..5e6fdc4 100644 --- a/src/test/java/KeyValuePairTest.java +++ b/src/test/java/io/generics/myArrayList/KeyValuePairTest.java @@ -1,3 +1,5 @@ +package io.generics.myArrayList; + import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/MyArrayListTest.java b/src/test/java/io/generics/myArrayList/MyArrayListTest.java similarity index 62% rename from src/test/java/MyArrayListTest.java rename to src/test/java/io/generics/myArrayList/MyArrayListTest.java index feb00a6..176726a 100644 --- a/src/test/java/MyArrayListTest.java +++ b/src/test/java/io/generics/myArrayList/MyArrayListTest.java @@ -1,4 +1,4 @@ - +package io.generics.myArrayList; import org.junit.Assert; import org.junit.Test; @@ -25,7 +25,7 @@ public void addTest(){ MyArrayList it = new MyArrayList<>(input); String toBeAdded = "5"; String[] expected = {"1","2","3","4","5"}; - it.add(toBeAdded); + boolean x = it.add(toBeAdded); String[] actual = it.getMyArrayList(); Assert.assertArrayEquals(expected, actual); } @@ -35,7 +35,7 @@ public void add3Test(){ MyArrayList myArray = new MyArrayList<>(); Integer toBeAdded = 5; Integer[] expected = {5}; - myArray.add(toBeAdded); + boolean x = myArray.add(toBeAdded); Object[] actual = myArray.getMyArrayList(); Assert.assertArrayEquals(expected, actual); } @@ -53,28 +53,27 @@ public void add2Test(){ } @Test - public void addAllTest(){ + public void addAllTest1(){ Integer[] input = {1,2,3,4,5}; MyArrayList id = new MyArrayList<>(input); Integer[] toAdd = {6,7,8}; - id.addAll(toAdd); + boolean x = id.addAll(toAdd); Integer [] expected = {1,2,3,4,5,6,7,8}; Integer[] actual = id.getMyArrayList(); Assert.assertArrayEquals(expected, actual); } -// @Test -// public void removeAllTest(){ -// Integer[] input ={1,2,3,4,5,6,7,8}; -// MyArrayList id = new MyArrayList<>(input); -// Integer[] toRemove = {2,4,6,8}; -// id.removeAll(toRemove); -// Integer[] actual = id.getMyArrayList(); -// Integer[] expected = {1,3,5,7}; -// -// Assert.assertArrayEquals(expected, actual); -// } + @Test + public void addAllTest2(){ + Integer[] input = {1,2,3,4,5}; + MyArrayList id = new MyArrayList<>(input); + Integer[] toAdd = {6,7,8}; + Integer[] expected = {1,2,6,7,8,3,4,5}; + id.addAll(2, toAdd); + Integer[] actual = id.getMyArrayList(); + Assert.assertArrayEquals(expected, actual); + } @Test public void getTest(){ @@ -95,6 +94,39 @@ public void removeTest(){ Assert.assertArrayEquals(expected, actual); } + @Test + public void remove2Test(){ + String[] input = {"a","b","c","d","e","f"}; + MyArrayList arrayList = new MyArrayList<>(input); + String[] expected = {"a","b","d","e","f"}; + arrayList.remove("c"); + String[] actual = arrayList.getMyArrayList(); + Assert.assertArrayEquals(expected, actual); + } + +// @Test +// public void removeAllTest(){ +// Integer[] input ={1,2,3,4,5,6,7,8}; +// MyArrayList id = new MyArrayList<>(input); +// Integer[] toRemove = {2,4,6,8}; +// id.removeAll(toRemove); +// Integer[] actual = id.getMyArrayList(); +// Integer[] expected = {1,3,5,7}; +// +// Assert.assertArrayEquals(expected, actual); +// } + + @Test + public void retainAllTest(){ + Integer[] input ={1,2,3,4,5,6,7,8}; + MyArrayList arrayList = new MyArrayList<>(input); + Integer[] expected = {2,4,6,8}; + arrayList.retainAll(new Integer[]{2,4,6,8}); + Integer[] actual = arrayList.getMyArrayList(); + Assert.assertArrayEquals(expected, actual); + } + + @Test public void clearTest(){ Integer[] input = {1,2,3,4,5}; @@ -110,7 +142,17 @@ public void setTest(){ Integer[] input = {1,2,3,4}; MyArrayList array = new MyArrayList<>(input); Integer expected = 2; - Integer actual = array.set(10,1); + Integer actual = array.set(1,10); + Assert.assertEquals(expected, actual); + } + + @Test + public void setTest2() { + Integer[] input = {1, 2, 3, 4}; + MyArrayList array = new MyArrayList<>(input); + Integer expected = 10; + Integer removed = array.set(1, 10); + Integer actual = array.get(1); Assert.assertEquals(expected, actual); } @@ -142,7 +184,7 @@ public void subListTest(){ } @Test - public void size(){ + public void sizeTest(){ Integer[] input = {1,2,3,4,5,6,7}; MyArrayList array = new MyArrayList<>(input); int expected = 7; @@ -150,6 +192,41 @@ public void size(){ Assert.assertEquals(expected, actual); } + @Test + public void indexOfTest(){ + Integer[] input = {1,2,3,4,5,4,4}; + MyArrayList array = new MyArrayList<>(input); + int expected = 3; + int actual = array.indexOf(4); + Assert.assertEquals(expected, actual); + } + + @Test + public void lastIndexOfTest(){ + Integer[] input = {1,2,3,4,5,4,4}; + MyArrayList array = new MyArrayList<>(input); + int expected = 6; + int actual = array.lastIndexOf(4); + Assert.assertEquals(expected, actual); + } + + @Test + public void toArrayTest1(){ + Integer[] input = {1,2,3,4,5,6,7}; + MyArrayList myArrayList = new MyArrayList<>(input); + Object[] expected = {1,2,3,4,5,6,7}; + Object[] actual = myArrayList.toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void toArrayTest2(){ + MyArrayList myArrayList = new MyArrayList<>(); + Integer[] expected = {1,2,3,4,5,4,4}; + Integer[] actual = myArrayList.toArray(expected); + Assert.assertArrayEquals(expected, actual); + } + @Test public void countDupesTest(){ Integer[] input = {1,1,2,1,3,1,4,1,5,1,6,1,7}; diff --git a/src/test/java/MyMapTest.java b/src/test/java/io/generics/myArrayList/MyMapTest.java similarity index 97% rename from src/test/java/MyMapTest.java rename to src/test/java/io/generics/myArrayList/MyMapTest.java index d4eb263..18bbf81 100644 --- a/src/test/java/MyMapTest.java +++ b/src/test/java/io/generics/myArrayList/MyMapTest.java @@ -1,8 +1,8 @@ +package io.generics.myArrayList; + import org.junit.Assert; import org.junit.Test; -import java.util.Arrays; - public class MyMapTest { @Test diff --git a/src/test/java/MySetTest.java b/src/test/java/io/generics/myArrayList/MySetTest.java similarity index 85% rename from src/test/java/MySetTest.java rename to src/test/java/io/generics/myArrayList/MySetTest.java index d7bb14d..f942e78 100644 --- a/src/test/java/MySetTest.java +++ b/src/test/java/io/generics/myArrayList/MySetTest.java @@ -1,9 +1,8 @@ - +package io.generics.myArrayList; import org.junit.Assert; import org.junit.Test; -import java.util.Arrays; public class MySetTest { @Test @@ -72,6 +71,30 @@ public void add3Test(){ Assert.assertArrayEquals(expected, actual); } + @Test + public void addAllTest1(){ + Integer[] input = {1,2,3,4,5}; + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); + Integer[] toBeAdded = {6,7,8}; + Integer[] expected = {1,2,3,4,5,6,7,8}; + mySet.addAll(toBeAdded); + Integer[] actual = mySet.toArray(); + Assert.assertArrayEquals(expected, actual); + } + + @Test + public void addAllTest2(){ + Integer[] input = {1,2,3,4,5}; + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); + Integer[] toBeAdded = {6,7,8}; + Integer[] expected = {1,2,6,7,8,3,4,5}; + mySet.addAll(2, toBeAdded); + Integer[] actual = mySet.toArray(); + Assert.assertArrayEquals(expected, actual); + } + @Test public void removeTest(){ Integer[] input = {1,2,3,4,5}; @@ -139,16 +162,5 @@ public void clearTest(){ Assert.assertArrayEquals(expected, actual); } - @Test - public void getTest(){ - Integer[] input = {1,2,3,4,5}; - MyArrayList in = new MyArrayList<>(input); - MySet mySet = new MySet<>(in); - Integer actual = mySet.get(1); - Integer expected = 2; - - Assert.assertEquals(expected, actual); - } - } From f667c45acbbe5780b7d871514c10f6bd605710ab Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Thu, 5 Jul 2018 20:01:39 -0400 Subject: [PATCH 11/15] added methods & tests --- .idea/workspace.xml | 728 +++++++++--------- .../io/generics/myArrayList/KeyValuePair.java | 21 +- .../io/generics/myArrayList/MyArrayList.java | 38 +- .../java/io/generics/myArrayList/MyMap.java | 32 +- .../java/io/generics/myArrayList/MySet.java | 20 +- .../myArrayList/KeyValuePairTest.java | 11 +- .../generics/myArrayList/MyArrayListTest.java | 42 +- .../io/generics/myArrayList/MyMapTest.java | 41 +- .../io/generics/myArrayList/MySetTest.java | 47 +- 9 files changed, 555 insertions(+), 425 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 7ed7f2e..2447fa4 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -3,15 +3,14 @@ - - - - - - - - - + + + + + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + - - - - - - - - - - + + - - + + @@ -88,11 +58,43 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -134,13 +136,14 @@ @@ -176,10 +179,10 @@ - @@ -189,9 +192,9 @@ + - @@ -288,14 +291,14 @@ - + - + @@ -306,8 +309,8 @@ - + @@ -329,9 +332,9 @@ - + @@ -352,8 +355,8 @@ - + @@ -375,8 +378,8 @@ - + @@ -398,8 +401,8 @@ - - - - - + + + + + - - - - - + + + + + @@ -489,52 +492,53 @@ - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + - + @@ -542,13 +546,12 @@ - - + + - + - @@ -560,6 +563,7 @@ + @@ -570,7 +574,7 @@ - @@ -590,14 +594,16 @@ - - - - - - - - + + + + + + + + + + @@ -614,28 +620,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -663,14 +669,16 @@ - - - - - - - - + + + + + + + + + + @@ -681,14 +689,16 @@ - - - - - - - - + + + + + + + + + + @@ -729,28 +739,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -782,14 +792,16 @@ - - - - - - - - + + + + + + + + + + @@ -799,28 +811,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -841,14 +853,16 @@ - - - - - - - - + + + + + + + + + + @@ -875,28 +889,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -914,14 +928,16 @@ - - - - - - - - + + + + + + + + + + @@ -941,28 +957,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -980,14 +996,16 @@ - - - - - - - - + + + + + + + + + + @@ -1001,14 +1019,16 @@ - - - - - - - - + + + + + + + + + + @@ -1089,105 +1109,111 @@ - + - - + + - + - - + + + + + - + - - + + - + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - + + - + - - + + - + - - + + - - - - - - - - - + + + + + + + + + + + + diff --git a/src/main/java/io/generics/myArrayList/KeyValuePair.java b/src/main/java/io/generics/myArrayList/KeyValuePair.java index 30ebfdf..8f2edb3 100644 --- a/src/main/java/io/generics/myArrayList/KeyValuePair.java +++ b/src/main/java/io/generics/myArrayList/KeyValuePair.java @@ -12,6 +12,12 @@ public KeyValuePair(K key, V value) { this.value = value; } + public KeyValuePair(){ + this.setValue(value); + this.setKey(key); + + } + public void setKey(K key) { this.key = key; } @@ -21,18 +27,29 @@ public void setValue(V value) { } public K getKey() { + this.setKey(key); return key; } public V getValue() { + this.setValue(value); return value; } - public boolean equalTo(K key1){ - if(key.equals(key1)){ + public boolean equalTo(K key){ + if(getKey().equals(key)){ return true; } return false; } + + public boolean keyEquals(K key2){ + if(this.getKey() == key2) return true; + if(key2 == null) return false; + if(this.getKey().getClass()!=key2.getClass()) return false; + K other = key2; + return this.getKey().equals(other); + } + } diff --git a/src/main/java/io/generics/myArrayList/MyArrayList.java b/src/main/java/io/generics/myArrayList/MyArrayList.java index 397f2d7..b49946e 100644 --- a/src/main/java/io/generics/myArrayList/MyArrayList.java +++ b/src/main/java/io/generics/myArrayList/MyArrayList.java @@ -8,6 +8,8 @@ public class MyArrayList { private T[] myArrayList; + private T element; + public MyArrayList(int size) { this.myArrayList = (T[]) new Object[size]; @@ -91,7 +93,6 @@ public T get(int index) { } public boolean remove(int index) { - T[] tempArray = Arrays.copyOf(myArrayList, myArrayList.length); for (int i = 0; i < myArrayList.length; i++) { if (i >= index) { if (i == myArrayList.length - 1) { @@ -101,7 +102,7 @@ public boolean remove(int index) { } } } - myArrayList = Arrays.copyOf(myArrayList, tempArray.length - 1); + myArrayList = Arrays.copyOf(myArrayList, myArrayList.length - 1); return true; } @@ -122,26 +123,9 @@ public boolean remove(T object){ return isPresent; } -// public boolean removeAll(T[] objects) { -// T[] tempArray = Arrays.copyOf(myArrayList, myArrayList.length); -// int j = 0; -// int x = 0; -// for(int i = 0; i(size); } - public MyMap(MyArrayList> myMap){ - this.myMap = myMap; + public MyMap(MyArrayList> myMap1){ + myMap = myMap1; } - public void setMyMap(MyArrayList> myMap) { - this.myMap = myMap; - } + public void setMyMap(MyArrayList> myMap1) { } public MyArrayList> getMyMap() { return myMap; } - public void add(KeyValuePair value){ - for(int i=0; i value) { + MyArrayList keySet = new MyArrayList<>(); + for(int i = 0; i myPair = new KeyValuePair<>(k, v); + KeyValuePair myPair = new KeyValuePair<>("Key", 5); String expectedKey = "Key"; Integer expectedValue = 5; String actualKey = myPair.getKey(); @@ -17,4 +15,11 @@ public void constructorTest(){ Assert.assertEquals(expectedValue, actualValue); } + + @Test + public void equalsTest(){ + KeyValuePair myPair = new KeyValuePair<>("Key", 5); + boolean actual = myPair.equals("Key"); + Assert.assertTrue(actual); + } } diff --git a/src/test/java/io/generics/myArrayList/MyArrayListTest.java b/src/test/java/io/generics/myArrayList/MyArrayListTest.java index 176726a..d72303d 100644 --- a/src/test/java/io/generics/myArrayList/MyArrayListTest.java +++ b/src/test/java/io/generics/myArrayList/MyArrayListTest.java @@ -104,17 +104,17 @@ public void remove2Test(){ Assert.assertArrayEquals(expected, actual); } -// @Test -// public void removeAllTest(){ -// Integer[] input ={1,2,3,4,5,6,7,8}; -// MyArrayList id = new MyArrayList<>(input); -// Integer[] toRemove = {2,4,6,8}; -// id.removeAll(toRemove); -// Integer[] actual = id.getMyArrayList(); -// Integer[] expected = {1,3,5,7}; -// -// Assert.assertArrayEquals(expected, actual); -// } + @Test + public void removeAllTest(){ + Integer[] input ={1,2,3,4,5,6,7,8}; + MyArrayList id = new MyArrayList<>(input); + Integer[] toRemove = {1,2,3,4}; + id.removeAll(toRemove); + Integer[] actual = id.getMyArrayList(); + Integer[] expected = {5,6,7,8}; + + Assert.assertArrayEquals(expected, actual); + } @Test public void retainAllTest(){ @@ -126,6 +126,16 @@ public void retainAllTest(){ Assert.assertArrayEquals(expected, actual); } + @Test + public void retainAll2Test(){ + String[] input= {"a","b","c","d","e","f"}; + MyArrayList arrayList = new MyArrayList<>(input); + String[] expected = {"a","c","f"}; + arrayList.retainAll(new String[]{"a","c","f"}); + String[] actual = arrayList.getMyArrayList(); + Assert.assertArrayEquals(expected, actual); + } + @Test public void clearTest(){ @@ -160,18 +170,16 @@ public void setTest2() { public void containsTest(){ Integer[] input = {1,2,3,4,5,6}; MyArrayList array = new MyArrayList<>(input); - boolean expected = true; - boolean actual = array.contains(4); - Assert.assertEquals(expected, actual); + + Assert.assertTrue(array.contains(4)); } @Test public void isEmptyTest(){ String[] input = {}; MyArrayList array = new MyArrayList<>(input); - boolean expected = true; - boolean actual = array.isEmpty(); - Assert.assertEquals(expected, actual); + + Assert.assertTrue(array.isEmpty()); } @Test diff --git a/src/test/java/io/generics/myArrayList/MyMapTest.java b/src/test/java/io/generics/myArrayList/MyMapTest.java index 18bbf81..7338150 100644 --- a/src/test/java/io/generics/myArrayList/MyMapTest.java +++ b/src/test/java/io/generics/myArrayList/MyMapTest.java @@ -13,22 +13,55 @@ public void constructorTest(){ Assert.assertEquals(expected, actual); } + @Test + public void constructor2Test(){ + KeyValuePair keyValue1 = new KeyValuePair<>("Carolynn",100); + KeyValuePair keyValue2 = new KeyValuePair<>("Carolynn", 100); + KeyValuePair keyValue3 = new KeyValuePair<>("Luis",100); + KeyValuePair[] keyValueArray = new KeyValuePair[]{keyValue1,keyValue2,keyValue3}; + MyArrayList> myArrayList = new MyArrayList<>(keyValueArray); + MyMap myMap = new MyMap<>(myArrayList); + int expected = 2; + int actual = myMap.size(); +// KeyValuePair [] expected = new KeyValuePair[]{keyValue1,keyValue2}; +// KeyValuePair [] actual = myMap.getMyMap().getMyArrayList(); + Assert.assertEquals(expected, actual); + } + @Test public void addTest(){ KeyValuePair keyValue1 = new KeyValuePair<>("Key",5); KeyValuePair keyValue2 = new KeyValuePair<>("Carolynn", 100); KeyValuePair keyValue3 = new KeyValuePair<>("Luis",100); - KeyValuePair [] keyValueArray = new KeyValuePair[3]; - keyValueArray[0] = keyValue1; - keyValueArray[1] = new KeyValuePair<>("Id",7); + + KeyValuePair[] keyValueArray = new KeyValuePair[]{keyValue1,keyValue2}; MyArrayList> myArrayList = new MyArrayList<>(keyValueArray); MyMap myMap = new MyMap<>(myArrayList); myMap.add(keyValue3); KeyValuePair[] actual = myMap.toArray(); - KeyValuePair[] expected = new KeyValuePair []{keyValue1,keyValue2,keyValue3}; + KeyValuePair[] expected = new KeyValuePair[]{keyValue1,keyValue2,keyValue3}; Assert.assertArrayEquals(expected,actual); + } + + @Test + public void add2Test(){ + KeyValuePair keyValue1 = new KeyValuePair<>("Key",5); + KeyValuePair keyValue2 = new KeyValuePair<>("Carolynn", 100); + KeyValuePair keyValue3 = new KeyValuePair<>("Carolynn",100); + KeyValuePair[] keyValueArray = new KeyValuePair[]{keyValue1,keyValue2}; + MyArrayList> myArrayList = new MyArrayList<>(keyValueArray); + MyMap myMap = new MyMap<>(myArrayList); + myMap.add(keyValue3); + KeyValuePair[] actual = myMap.toArray(); + KeyValuePair[] expected = new KeyValuePair[]{keyValue1,keyValue2}; + + Assert.assertArrayEquals(expected,actual); } + @Test + public void removeTest(){ + + } } diff --git a/src/test/java/io/generics/myArrayList/MySetTest.java b/src/test/java/io/generics/myArrayList/MySetTest.java index f942e78..9c41f9b 100644 --- a/src/test/java/io/generics/myArrayList/MySetTest.java +++ b/src/test/java/io/generics/myArrayList/MySetTest.java @@ -95,14 +95,25 @@ public void addAllTest2(){ Assert.assertArrayEquals(expected, actual); } + @Test public void removeTest(){ - Integer[] input = {1,2,3,4,5}; + String[] input = {"a","b","c","d","e"}; + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); + mySet.remove("c"); + String[] expected = {"a","b","d","e"}; + String[] actual = mySet.toArray(); + Assert.assertArrayEquals(expected,actual); + } + + @Test + public void retainAll(){ + Integer[] input = {1,2,3,4,5,6,7}; MyArrayList in = new MyArrayList<>(input); MySet mySet = new MySet<>(in); - int index = 2; - mySet.remove(index); - Integer[] expected = {1,2,4,5}; + Integer[] expected = {4,5,6,7}; + mySet.retainAll(new Integer[]{4,5,6,7}); Integer[] actual = mySet.toArray(); Assert.assertArrayEquals(expected,actual); } @@ -122,10 +133,26 @@ public void containsTest(){ Integer[] input = {1,2,3,4,5}; MyArrayList in = new MyArrayList<>(input); MySet mySet = new MySet<>(in); - boolean expected = true; boolean actual = mySet.contains(3); + Assert.assertTrue(actual); + } - Assert.assertEquals(expected, actual); + @Test + public void containsAll(){ + Integer[] input = {1,2,3,4,5}; + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); + + Assert.assertTrue(mySet.containsAll(new Integer[]{2,5})); + } + + @Test + public void containsAll2(){ + Integer[] input = {1,2,3,4,5}; + MyArrayList in = new MyArrayList<>(input); + MySet mySet = new MySet<>(in); + + Assert.assertFalse(mySet.containsAll(new Integer[]{5,7})); } @Test @@ -133,10 +160,8 @@ public void isEmptyTest(){ Integer[] input = {4}; MyArrayList in = new MyArrayList<>(input); MySet mySet = new MySet<>(in); - boolean expected = false; - boolean actual = mySet.isEmpty(); - Assert.assertEquals(expected, actual); + Assert.assertFalse(mySet.isEmpty()); } @Test @@ -144,10 +169,8 @@ public void isEmpty2Test(){ Integer[] input = {}; MyArrayList in = new MyArrayList<>(input); MySet mySet = new MySet<>(in); - boolean expected = true; - boolean actual = mySet.isEmpty(); - Assert.assertEquals(expected, actual); + Assert.assertTrue(mySet.isEmpty()); } @Test From eeea5117c17a67d0d33ffd14ec5733753bd74b5d Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Thu, 19 Jul 2018 14:34:13 -0400 Subject: [PATCH 12/15] MyMap working correctly now --- .idea/workspace.xml | 672 +++++++----------- .../io/generics/myArrayList/KeyValuePair.java | 9 +- .../io/generics/myArrayList/MyArrayList.java | 26 +- .../java/io/generics/myArrayList/MyMap.java | 49 +- .../java/io/generics/myArrayList/MySet.java | 3 - .../generics/myArrayList/MyArrayListTest.java | 22 +- .../io/generics/myArrayList/MyMapTest.java | 96 ++- 7 files changed, 409 insertions(+), 468 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 2447fa4..98b1747 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,5 +1,8 @@ + + + @@ -7,10 +10,8 @@ - - @@ -179,7 +168,7 @@ - @@ -487,20 +462,12 @@ - + + - - - - - - - - - @@ -522,42 +489,51 @@ + + + + + + + + + - - + - + - - + - + - + + @@ -572,13 +548,6 @@ - - - - - - - @@ -591,12 +560,8 @@ - - - - - - + + @@ -641,12 +606,8 @@ - - - - - - + + @@ -663,12 +624,8 @@ - - - - - - + + @@ -677,20 +634,6 @@ - - - - - - - - - - - - - - @@ -734,12 +677,8 @@ - - - - - - + + @@ -770,12 +709,8 @@ - - - - - - + + @@ -820,12 +755,8 @@ - - - - - - + + @@ -863,12 +794,8 @@ - - - - - - + + @@ -888,12 +815,8 @@ - - - - - - + + @@ -1008,62 +931,55 @@ - + - - + + - - - - - - - - - - - - - + - - + + - + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + - + - - + + - + + diff --git a/src/main/java/io/generics/myArrayList/Collections.java b/src/main/java/io/generics/myArrayList/Collections.java new file mode 100644 index 0000000..839021d --- /dev/null +++ b/src/main/java/io/generics/myArrayList/Collections.java @@ -0,0 +1,17 @@ +package io.generics.myArrayList; + +public interface Collections { + boolean add(T value); + boolean addAll(T[] toBeAdded); + void clear(); + boolean contains(T object); + boolean containsAll(T[] array); + boolean isEmpty(); + boolean remove(T object); + boolean removeAll(T[] array); + boolean retainAll(T[] array); + int size(); + Object[] toArray(); + T[] toArray(T[] array); + +} diff --git a/src/main/java/io/generics/myArrayList/MyArrayList.java b/src/main/java/io/generics/myArrayList/MyArrayList.java index 59a574e..67d4585 100644 --- a/src/main/java/io/generics/myArrayList/MyArrayList.java +++ b/src/main/java/io/generics/myArrayList/MyArrayList.java @@ -4,12 +4,10 @@ import java.lang.*; -public class MyArrayList { +public class MyArrayList implements Collections { private T[] myArrayList; - private T element; - public MyArrayList(int size) { this.myArrayList = (T[]) new Object[size]; @@ -28,6 +26,7 @@ public T[] getMyArrayList() { return this.myArrayList; } + @Override public boolean add(T toBeAdded) { myArrayList = Arrays.copyOf(myArrayList, myArrayList.length + 1); myArrayList[myArrayList.length - 1] = toBeAdded; @@ -54,6 +53,7 @@ public boolean add(int index, T toBeAdded) { return true; } + @Override public boolean addAll(T[] toBeAdded) { int x = toBeAdded.length; int y = myArrayList.length; @@ -82,6 +82,24 @@ public boolean addAll(int index, T[] toBeAdded){ return true; } + @Override + public void clear() { + myArrayList = Arrays.copyOf(myArrayList, 0); + } + + @Override + public boolean contains(T value) { + for (T val : myArrayList) { + if (val.equals(value)) return true; + } + return false; + } + + @Override + public boolean containsAll(T[] array) { + return false; + } + public T get(int index) { T temp = myArrayList[0]; for (int i = 0; i < myArrayList.length; i++) { @@ -92,6 +110,34 @@ public T get(int index) { return temp; } + @Override + public boolean isEmpty() { + if (myArrayList.length == 0) return true; + return false; + } + + public int indexOf(T value){ + Integer x = null; + for(int i = 0; i=0; i--){ + if(myArrayList[i].equals(value)){ + x=i; + break; + } + } + return x; + } + public boolean remove(int index) { for (int i = 0; i < myArrayList.length; i++) { if (i >= index) { @@ -106,6 +152,7 @@ public boolean remove(int index) { return true; } + @Override public boolean remove(T object){ boolean isPresent = false; int indexOfRemoved = 0; @@ -123,10 +170,21 @@ public boolean remove(T object){ return isPresent; } + @Override public boolean removeAll(T[] objects) { return true; } + + public void replace(int index, T valueReplacing){ + for(int i = 0; i< myArrayList.length; i++){ + if(i==index){ + myArrayList[i] = valueReplacing; + } + } + } + + @Override public boolean retainAll(T[]objects){ T[] tempArray = Arrays.copyOf(myArrayList, objects.length); int j = 0; @@ -148,9 +206,6 @@ public boolean retainAll(T[]objects){ return true; } - public void clear() { - myArrayList = Arrays.copyOf(myArrayList, 0); - } public T set(int index, T valueReplacing) { T replaced = null; @@ -163,28 +218,6 @@ public T set(int index, T valueReplacing) { return replaced; } - public void replace(int index, T valueReplacing){ - for(int i = 0; i< myArrayList.length; i++){ - if(i==index){ - myArrayList[i] = valueReplacing; - } - } - } - - public boolean contains(T value) { - for (T val : myArrayList) { - if (val.equals(value)) return true; - } - return false; - } - - - - public boolean isEmpty() { - if (myArrayList.length == 0) return true; - return false; - } - public T[] subList(int from, int to) { return Arrays.copyOfRange(myArrayList, from, to); } @@ -193,47 +226,23 @@ public int size() { return myArrayList.length; } - public int indexOf(T value){ - Integer x = null; - for(int i = 0; i=0; i--){ - if(myArrayList[i].equals(value)){ - x=i; - break; - } - } - return x; + @Override + public Object[] toArray(){ + return myArrayList; } + @Override public T[] toArray(T[] array){ myArrayList = array; return myArrayList; } - public Object[] toArray(){ - return myArrayList; - } + public void trimToSize(){ - @Override - public boolean equals(Object object){ - if(this == object) return true; - if(object == null) return false; - if(getClass()!=object.getClass()) return false; - T other = (T) object; - return this.equals(other); } - public Integer countDupes(int index){ + public Integer countDuplicates(int index){ Integer count = 0; T val = myArrayList[index]; for(int i = 0; i> getMyMap() { return myMap; } - public boolean add(KeyValuePair value) { + public void clear(){ + myMap.clear(); + } + + public boolean containsKey(K key){ + for(int i = 0; i> entrySet(){ + + } + + public V get(K key){ + + } + + public boolean isEmpty(){ + return myMap.isEmpty(); + } + + public MySet keySet(){ + + } + + public boolean put(KeyValuePair value) { myMap.add(value); for (int i = 0; i < myMap.size(); i++) { int count = 0; @@ -57,6 +97,10 @@ public boolean add(KeyValuePair value) { return true; } + public boolean putAll(MyArrayList> arrayList){ + return true; + } + public void remove(int index){ myMap.remove(index); } @@ -65,38 +109,13 @@ public int size(){ return myMap.size(); } + public MyArrayList values(){ - public boolean containsKey(K key){ - for(int i = 0; i[] toArray(){ - return myMap.getMyArrayList(); - } diff --git a/src/main/java/io/generics/myArrayList/MySet.java b/src/main/java/io/generics/myArrayList/MySet.java index 77307bb..c7700bc 100644 --- a/src/main/java/io/generics/myArrayList/MySet.java +++ b/src/main/java/io/generics/myArrayList/MySet.java @@ -1,6 +1,6 @@ package io.generics.myArrayList; -public class MySet { +public class MySet implements Collections { private MyArrayList mySet; @@ -15,7 +15,7 @@ public MySet(int size) { public MySet(MyArrayList setInput) { this.mySet = setInput; for(int i = 0; i1){ + if(mySet.countDuplicates(i)>1){ mySet.remove(i); } } @@ -25,6 +25,7 @@ public MyArrayList getMySet() { return mySet; } + @Override public boolean add(T value){ if(!mySet.contains(value)) { mySet.add(value); @@ -32,24 +33,38 @@ public boolean add(T value){ return true; } - public boolean add(int index, T value){ - if(!mySet.contains(value)) { - mySet.add(index, value); - } + @Override + public boolean addAll(T[] array){ + mySet.addAll(array); return true; } - public boolean addAll(T[] toBeAdded){ - mySet.addAll(toBeAdded); - return true; + @Override + public void clear(){ + mySet.clear(); + } + + @Override + public boolean contains(T value){ + return mySet.contains(value); } - public boolean addAll(int index, T[] toBeAdded){ - mySet.addAll(index, toBeAdded); + @Override + public boolean containsAll(T[] array){ + for(T object: array){ + if(!mySet.contains(object)){ + return false; + } + } return true; } + @Override + public boolean isEmpty(){ + return mySet.isEmpty(); + } + @Override public boolean remove(T object){ if(mySet.contains(object)) { mySet.remove(object); @@ -58,6 +73,10 @@ public boolean remove(T object){ return false; } + public boolean removeAll(T[] array){ + return true; + } + public boolean retainAll(T[] array){ mySet.retainAll(array); return true; @@ -75,26 +94,11 @@ public T[] toArray(T[] array){ return mySet.toArray(array); } - public boolean contains(T value){ - return mySet.contains(value); - } - public boolean containsAll(T[] array){ - for(T object: array){ - if(!mySet.contains(object)){ - return false; - } - } - return true; - } - public boolean isEmpty(){ - return mySet.isEmpty(); - } - public void clear(){ - mySet.clear(); - } + + public T set(int index, T object){ diff --git a/src/test/java/io/generics/myArrayList/MyArrayListTest.java b/src/test/java/io/generics/myArrayList/MyArrayListTest.java index 3083d2b..4e4f48e 100644 --- a/src/test/java/io/generics/myArrayList/MyArrayListTest.java +++ b/src/test/java/io/generics/myArrayList/MyArrayListTest.java @@ -240,7 +240,7 @@ public void countDupesTest(){ Integer[] input = {1,1,2,1,3,1,4,1,5,1,6,1,7}; MyArrayList array = new MyArrayList<>(input); Integer expected = 7; - Integer actual = array.countDupes(0); + Integer actual = array.countDuplicates(0); Assert.assertEquals(expected, actual); } } diff --git a/src/test/java/io/generics/myArrayList/MyMapTest.java b/src/test/java/io/generics/myArrayList/MyMapTest.java index e130083..912edab 100644 --- a/src/test/java/io/generics/myArrayList/MyMapTest.java +++ b/src/test/java/io/generics/myArrayList/MyMapTest.java @@ -55,7 +55,7 @@ public void constructor4Test(){ } @Test - public void addTest(){ + public void putTest(){ KeyValuePair keyValue1 = new KeyValuePair<>("Key", 5); KeyValuePair keyValue2 = new KeyValuePair<>("Carolynn", 100); KeyValuePair keyValue3 = new KeyValuePair<>("Luis",100); @@ -63,21 +63,21 @@ public void addTest(){ KeyValuePair[] keyValueArray = new KeyValuePair[]{keyValue1,keyValue2}; MyArrayList> myArrayList = new MyArrayList<>(keyValueArray); MyMap myMap = new MyMap<>(myArrayList); - myMap.add(keyValue3); + myMap.put(keyValue3); String actual = myMap.getMyMap().get(2).getKey(); String expected = "Luis"; Assert.assertEquals(expected,actual); } @Test - public void add2Test(){ + public void put2Test(){ KeyValuePair keyValue1 = new KeyValuePair<>("Key",5); KeyValuePair keyValue2 = new KeyValuePair<>("Carolynn", 100); KeyValuePair keyValue3 = new KeyValuePair<>("Carolynn", 100); KeyValuePair[] keyValueArray = new KeyValuePair[]{keyValue1,keyValue2}; MyArrayList> myArrayList = new MyArrayList<>(keyValueArray); MyMap myMap = new MyMap<>(myArrayList); - myMap.add(keyValue3); + myMap.put(keyValue3); int actual = myMap.size(); int expected = 2; Assert.assertEquals(expected,actual); From 1ba5b18286294c541f6d326b807ad4d9492cf0ec Mon Sep 17 00:00:00 2001 From: Carolynn Vansant Date: Wed, 19 Sep 2018 18:08:07 -0400 Subject: [PATCH 14/15] improved existing methods and added new methods --- .idea/workspace.xml | 529 ++++++++++++------ .../io/generics/myArrayList/Collections.java | 1 - .../io/generics/myArrayList/MyArrayList.java | 64 ++- .../java/io/generics/myArrayList/MyMap.java | 50 +- .../java/io/generics/myArrayList/MySet.java | 25 +- .../myArrayList/KeyValuePairTest.java | 2 +- .../generics/myArrayList/MyArrayListTest.java | 102 ++-- .../io/generics/myArrayList/MyMapTest.java | 171 +++--- .../io/generics/myArrayList/MySetTest.java | 73 +-- 9 files changed, 577 insertions(+), 440 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index bacc7e2..cee570f 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,16 +1,19 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + - - + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + - - + + @@ -99,15 +179,15 @@ @@ -143,9 +223,9 @@ - @@ -156,6 +236,7 @@ + @@ -218,7 +299,6 @@