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..b2526f7
--- /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/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..6717d07
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,820 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ isEmpty
+ get
+ addall
+ add
+ iterator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Android
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1520538134410
+
+
+ 1520538134410
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No facets are configured
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 9.0
+
+
+
+
+
+
+
+
+
+
+
+ generics
+
+
+
+
+
+
+
+
+
+
+
+
+ 9.0
+
+
+
+
+
+
+
+
+
+
+
+ Maven: junit:junit:4.12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/generics.iml b/generics.iml
new file mode 100644
index 0000000..10ba022
--- /dev/null
+++ b/generics.iml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/.deleteme b/src/main/java/.deleteme
deleted file mode 100644
index e69de29..0000000
diff --git a/src/main/java/MyArrayList.java b/src/main/java/MyArrayList.java
new file mode 100644
index 0000000..b4f2d47
--- /dev/null
+++ b/src/main/java/MyArrayList.java
@@ -0,0 +1,128 @@
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class MyArrayList {
+
+
+
+ public E[] myArray;
+
+ public MyArrayList() {
+
+ this.myArray = (E[]) new Object[5];
+
+ }
+
+ public MyArrayList(int size) {
+
+ this.myArray = (E[]) new Object[size];
+ }
+
+ public int size() {
+
+ return this.myArray.length;
+ }
+
+ public void add(int index, E e) {
+ E[] myArrayNew = Arrays.copyOf(this.myArray, index + 1);
+ myArrayNew[index] = e;
+ this.myArray = myArrayNew;
+ }
+
+ public void add(E e) {
+
+ E[] myArrayNew = Arrays.copyOf(this.myArray, this.myArray.length + 1);
+ myArrayNew[myArrayNew.length - 1] = e;
+ this.myArray = myArrayNew;
+ }
+
+ public void addAll(E[] c) {
+
+ int counter = 0;
+ E[] combinedArray = Arrays.copyOf(myArray, myArray.length + c.length);
+
+ for (int i = myArray.length; i < combinedArray.length; i++) {
+ combinedArray[i] = c[counter];
+ counter++;
+ }
+ this.myArray = combinedArray;
+ }
+
+ public E get(int index) {
+
+ if (myArray.length > index) return myArray[index];
+
+ return null;
+ }
+
+ public void remove(int index) {
+
+ if (myArray.length > index && myArray.length > 0) {
+
+ E[] removedArray = Arrays.copyOf(this.myArray, this.myArray.length - 1);
+ int count = 0;
+
+ for (int i = 0; i < removedArray.length; i++) {
+
+ if (i != index) {
+ removedArray[count] = myArray[i];
+ count++;
+ }
+ }
+ this.myArray = removedArray;
+
+ }
+ }
+
+ public void remove(E e) {
+
+ E[] removedArray = Arrays.copyOf(this.myArray, this.myArray.length - 1);
+ int count = 0;
+
+ for (int i = 0; i < removedArray.length; i++) {
+
+ if (myArray != e) {
+ removedArray[count] = myArray[i];
+ count++;
+ }
+ }
+ this.myArray = removedArray;
+ }
+
+ public void set(int index, E e) {
+
+ myArray[index] = e;
+ }
+
+ public void clear() {
+
+ E[] myClearedArray = Arrays.copyOf(this.myArray, 0);
+ this.myArray = myClearedArray;
+ }
+
+ public boolean isEmpty() {
+
+ for (int i = 0; i < myArray.length; i++) {
+ if (myArray[i] != null)
+ return false;
+ }
+ return true;
+ }
+
+ public boolean contains(E e) {
+ for (int i = 0; i < myArray.length; i++) {
+ if (myArray[i].equals(e)) return true;
+ }
+ return false;
+ }
+
+ public E[] toArray() {
+
+ E[] newArray = (E[]) new Object[this.size()];
+ for(int i =0; i < this.size(); i++) {
+ newArray[i] = this.get(i);
+ }
+ return newArray;
+ }
+
+}
diff --git a/src/main/java/MySet.java b/src/main/java/MySet.java
new file mode 100644
index 0000000..c73a8a3
--- /dev/null
+++ b/src/main/java/MySet.java
@@ -0,0 +1,58 @@
+
+import java.util.HashSet;
+import java.util.Iterator;
+
+public class MySet{
+
+ MyArrayList mySet;
+
+ public MySet() {
+ mySet = new MyArrayList<>(5);
+ }
+
+ public MySet(int size){
+ mySet = new MyArrayList<>(size);
+ }
+
+ public E get(int index) {
+ return mySet.get(index);
+ }
+
+ public void add(E e) {
+ if (!mySet.contains(e)) mySet.add(e);
+ }
+
+
+ public void addAll(E[] eray) {
+ for (int i = 0; i < eray.length; i++) {
+ mySet.add(eray[i]);
+ }
+ }
+
+ public void clear() {
+ this.mySet.clear();
+ }
+
+ public boolean contains(E e) {
+ return this.mySet.contains(e);
+
+ }
+
+ public boolean isEmpty() {
+ return this.mySet.isEmpty();
+ }
+
+ public void remove(E e) {
+ this.mySet.remove(e);
+ }
+
+ public int size() {
+ return this.mySet.size();
+ }
+
+ public E[] toArray() {
+ return mySet.toArray();
+ }
+
+
+}
diff --git a/src/test/java/.deleteme b/src/test/java/.deleteme
deleted file mode 100644
index e69de29..0000000
diff --git a/src/test/java/MyArrayListTest.java b/src/test/java/MyArrayListTest.java
new file mode 100644
index 0000000..da2da3a
--- /dev/null
+++ b/src/test/java/MyArrayListTest.java
@@ -0,0 +1,304 @@
+import org.junit.Assert;
+import org.junit.Test;
+
+public class MyArrayListTest {
+
+
+
+ @Test
+ public void addIntegerTest() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ int expected = 6;
+ testArray.add(1);
+ int actual = testArray.size();
+ //Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void addStringTest() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ int expected = 6;
+ testArray.add("Ain't no thang!");
+ int actual = testArray.size();
+ //Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void addIntegerTestTwoArgs() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ int expected = 7;
+ testArray.add(6, 22);
+ int actual = testArray.size();
+ //Then
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void addStringTestTwoArgs() {
+
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ int expected = 7;
+ testArray.add(6, "Isn't it ironic?");
+ int actual = testArray.size();
+ //Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void addAll() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ String[] people = {"Dan Stooser", "Martin Kleadman", "Freudman Rachborn", "Seanly Priborg"};
+ testArray.add(0, "Reinhardt Massvender");
+ testArray.add(1, "Cloryfa Dergen");
+ testArray.add(2, "Sudentra Swalmner");
+ testArray.add(3, "Clarrifa Mantfloyva");
+ testArray.add(4, "Blunth Deshman");
+ testArray.addAll(people);
+ int expected = 9;
+ int actual = testArray.size();
+ //Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void addAllIntegers() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ Integer[] people = {12, 21, 344, 3234, 324344};
+ testArray.add(0, 98372);
+ testArray.add(1, 23421);
+ testArray.add(2, 2343144);
+ testArray.add(3, 234234322);
+ testArray.add(4, 2382);
+ testArray.addAll(people);
+ int expected = 10;
+ int actual = testArray.size();
+ //Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void get() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ Assert.assertTrue(testArray.get(3) == null);
+ //Then
+ }
+
+ @Test
+ public void getInteger() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ testArray.set(4, 3);
+ //Then
+ Assert.assertTrue(testArray.get(4) == 3 );
+ }
+
+ @Test
+ public void remove() {
+
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ int expected = 5;
+ testArray.remove(5);
+ //Then
+ int actual = testArray.size();
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void removeFalse() {
+
+ MyArrayList testArray = new MyArrayList<>();
+ //When
+ testArray.add(0, "Hoobastank");
+ testArray.add(1, "Coldplay");
+ testArray.add(2, "Green Day");
+ testArray.add(3, "Blue Jupiter");
+ testArray.add(4, "Red October");
+ testArray.remove(0);
+ testArray.remove(1);
+ testArray.remove(2);
+ testArray.remove(3);
+ testArray.remove(4);
+ int expected = 2;
+ int actual = testArray.size();
+ Assert.assertEquals(expected, actual);
+
+
+ }
+
+
+ @Test
+ public void removeE() {
+
+ //Given
+ MyArrayList testArray = new MyArrayList<>(0);
+
+ testArray.add("Heather");
+ testArray.add("Heather");
+ testArray.add("Cheyenne");
+ testArray.add("Heath");
+ testArray.add("Heather");
+ //When
+ int expected = 4;
+ testArray.remove("Heather");
+ //Then
+ int actual = testArray.size();
+ Assert.assertEquals(expected, actual);
+
+
+ }
+
+ @Test
+ public void removeEDouble() {
+
+ //Given
+ MyArrayList testArray = new MyArrayList<>(0);
+
+ testArray.add("Heather");
+ testArray.add("Heather");
+ testArray.add("Cheyenne");
+ testArray.add("Heath");
+ testArray.add("Heather");
+ //When
+ int expected = 3;
+ testArray.remove("Heather");
+ testArray.remove("Heather");
+ //Then
+ int actual = testArray.size();
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void set() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ int testIndex = 3;
+ //When
+ testArray.set(testIndex, 5);
+ //Then
+ Integer expected = 5;
+ Integer actual = testArray.get(testIndex);
+ Assert.assertEquals(expected, actual);
+
+
+ }
+
+ @Test
+ public void clear() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ testArray.clear();
+ //Then
+ Assert.assertTrue(testArray.isEmpty());
+ }
+
+ @Test
+ public void isEmptyTrue() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ testArray.add(0, "Hoobastank");
+ testArray.add(1, "Coldplay");
+ testArray.add(2, "Green Day");
+ testArray.add(3, "Blue Jupiter");
+ testArray.add(4, "Red October");
+ testArray.remove(4);
+ testArray.remove(3);
+ testArray.remove(2);
+ testArray.remove(1);
+ testArray.remove(0);
+ //Then
+ Assert.assertTrue(testArray.isEmpty());
+ }
+
+ @Test
+ public void isEmptyStringFalse() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ testArray.set(0, "Twilight");
+ testArray.set(1, "Princess");
+ testArray.set(2, "Filter");
+ testArray.set(3, "Zone");
+ testArray.set(4, "Sparkle");
+ //Then
+ Assert.assertFalse(testArray.isEmpty());
+ }
+
+ @Test
+ public void isEmptyFalse() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ testArray.set(0, 221);
+ testArray.set(1, 12);
+ testArray.set(2, 33);
+ testArray.set(3, 345);
+ testArray.set(4, 6546);
+ //Then
+ Assert.assertFalse(testArray.isEmpty());
+ }
+
+ @Test
+ public void containsFalse() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ String searchCriteria = "Imperium";
+ testArray.set(0, "Twilight");
+ testArray.set(1, "Princess");
+ testArray.set(2, "Filter");
+ testArray.set(3, "Zone");
+ testArray.set(4, "Sparkle");
+ //Then
+ Assert.assertFalse(testArray.contains(searchCriteria));
+ }
+
+ @Test
+ public void containsTrue() {
+ //Given
+ MyArrayList testArray = new MyArrayList<>(5);
+ //When
+ String searchCriteria = "Imperium";
+ testArray.set(0, "Twilight");
+ testArray.set(1, "Princess");
+ testArray.set(2, searchCriteria);
+ testArray.set(3, "Zone");
+ testArray.set(4, "Sparkle");
+ //Then
+ Assert.assertTrue(testArray.contains(searchCriteria));
+ }
+
+ @Test
+ public void testToArray() {
+ MyArrayList testArray = new MyArrayList<>(5);
+ testArray.set(0, "Twilight");
+ testArray.set(1, "Princess");
+ testArray.set(2, "Filter");
+ testArray.set(3, "Zone");
+ testArray.set(4, "Sparkle");
+ String[] expected = {"Twilight", "Princess", "Filter", "Zone", "Sparkle"};
+ Assert.assertEquals(expected, testArray.toArray());
+ }
+}
diff --git a/src/test/java/MySetTest.java b/src/test/java/MySetTest.java
new file mode 100644
index 0000000..05342e5
--- /dev/null
+++ b/src/test/java/MySetTest.java
@@ -0,0 +1,133 @@
+import org.junit.Assert;
+import org.junit.Test;
+
+public class MySetTest {
+
+
+ @Test
+ public void testAdd(){
+ // Given
+ MySet testSet = new MySet<>(0);
+ // When
+ testSet.add(12);
+ testSet.add(2);
+ testSet.add(2);
+ testSet.add(12);
+ int expected = 2;
+ // Then
+ Assert.assertEquals(expected , testSet.size());
+ }
+
+ @Test
+ public void testAddAll(){
+ // Given
+ MySet testSet = new MySet<>(0);
+ String[] eray = {"What", "Else", "Can", "I", "Say", "But", "Hey", "You're", "Welcome"};
+ // When
+ testSet.add("Rock");
+ testSet.add("Says,");
+ testSet.addAll(eray);
+ // Then
+ Assert.assertEquals( 11, testSet.size());
+ }
+
+ @Test
+ public void get() {
+ int index =3;
+ MySet testSet = new MySet<>(0);
+ testSet.add("Hercules");
+ testSet.add("Heracles");
+ testSet.add("Hermes");
+ testSet.add("Hera");
+
+ Assert.assertTrue(testSet.get(3).equals("Hera"));
+
+ }
+ @Test
+ public void testClear() {
+ // Given
+ MySet testSet = new MySet<>(10);
+ // When
+ testSet.clear();
+ // Then
+ Assert.assertTrue(testSet.size() == 0);
+
+ }
+
+ @Test
+ public void testContains() {
+ // Given
+ MySet testSet = new MySet<>(0);
+ // When
+ testSet.add(212);
+ testSet.add(112);
+ testSet.add(231);
+ Integer valueToBeFound = 231;
+ // Then
+ Assert.assertTrue(testSet.contains(valueToBeFound));
+ }
+
+ @Test
+ public void testIsEmpty() {
+ // Given
+ MySet testSet = new MySet<>(0);
+
+ // When
+ testSet.add("Hula");
+ testSet.add("Hoop");
+ testSet.add("Hope");
+ testSet.remove("Hope");
+ testSet.remove("Hoop");
+ testSet.remove("Hula");
+ boolean actual = testSet.isEmpty();
+ // Then
+ Assert.assertTrue(actual);
+ }
+
+ @Test
+ public void testRemove() {
+ // Given
+ MySet testSet = new MySet<>(0);
+ // When
+ testSet.add("Hula");
+ testSet.add("Hoop");
+ testSet.add("Hope");
+ testSet.remove("Hope");
+ testSet.remove("Hoop");
+
+ int actual = testSet.size();
+ // Then
+ Assert.assertTrue(actual == 1);
+ }
+
+
+ @Test
+ public void testSize() {
+ // Given
+ MySet testSet = new MySet<>(3);
+
+ // When
+ int expected = 3;
+ int actual = testSet.size();
+ // Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testToArray() {
+ // Given
+ MySet testSet = new MySet<>(0);
+ String[] disneyFilms = {"The Fox and the Hound", "The Rescuers Down Under",
+ "The Black Cauldron", "Pete's Dragon"};
+ testSet.add("Moana");
+ testSet.add("The Great Mouse Detective");
+ // When
+
+ testSet.addAll(disneyFilms);
+ String[] expected = {"Moana", "The Great Mouse Detective",
+ "The Fox and the Hound", "The Rescuers Down Under",
+ "The Black Cauldron", "Pete's Dragon"};
+ // Then
+ Assert.assertEquals(expected, testSet.toArray());
+ }
+}