From 266e2d006a1b24006c7cd6829d3c80c47f0245fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=91=90=EC=97=B4?= Date: Thu, 16 May 2024 14:19:44 +0900 Subject: [PATCH 1/2] [ArrayList]: insert, size, isEmpty, contains, get, remove --- .../List/ArrayList/ArrayList_enduf7686.java | 0 .../ArrayList/ArrayListTest_enduf7686.java | 0 .../List/ArrayList/ArrayListTest_name.java | 30 +++++++++++++++---- 3 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 src/main/java/List/ArrayList/ArrayList_enduf7686.java create mode 100644 src/test/java/List/ArrayList/ArrayListTest_enduf7686.java diff --git a/src/main/java/List/ArrayList/ArrayList_enduf7686.java b/src/main/java/List/ArrayList/ArrayList_enduf7686.java new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/List/ArrayList/ArrayListTest_enduf7686.java b/src/test/java/List/ArrayList/ArrayListTest_enduf7686.java new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/List/ArrayList/ArrayListTest_name.java b/src/test/java/List/ArrayList/ArrayListTest_name.java index fc87e3e..36d9c93 100644 --- a/src/test/java/List/ArrayList/ArrayListTest_name.java +++ b/src/test/java/List/ArrayList/ArrayListTest_name.java @@ -1,16 +1,16 @@ package List.ArrayList; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + import List.List; import org.junit.jupiter.api.Test; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; - -public class ArrayListTest_name { +public class ArrayListTest_enduf7686 { @Test void ArrayList의_생성_및_초기화() { // 구현 후 수정 - List list = new ArrayList_name(); + List list = new ArrayList_enduf7686(); assertThat(list).isNotNull(); } @@ -18,7 +18,7 @@ public class ArrayListTest_name { @Test void 데이터_5개_저장() { // 구현 후 수정 - List list = new ArrayList_name(); + List list = new ArrayList_enduf7686(); list.insert(11); list.insert(11); @@ -38,7 +38,7 @@ public class ArrayListTest_name { @Test void 데이터_5개_저장_후_22인_데이터_모두_삭제() { // 구현 후 수정 - List list = new ArrayList_name(); + List list = new ArrayList_enduf7686(); list.insert(11); list.insert(11); @@ -59,4 +59,22 @@ public class ArrayListTest_name { assertThat(list.get(1)).isEqualTo(11); assertThat(list.get(2)).isEqualTo(33); } + + @Test + void 데이터_5개_저장_후_데이터_확인() { + // 구현 후 수정 + List list = new ArrayList_enduf7686(); + + list.insert(11); + list.insert(11); + list.insert(22); + list.insert(22); + list.insert(33); + + assertThat(list.contains(11)).isEqualTo(true); + assertThat(list.contains(12)).isEqualTo(false); + assertThat(list.contains(22)).isEqualTo(true); + assertThat(list.contains(33)).isEqualTo(true); + assertThat(list.contains(34)).isEqualTo(false); + } } \ No newline at end of file From 5a834c2f660e15615d706fa1324c02d6cdad53ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=91=90=EC=97=B4?= Date: Thu, 16 May 2024 14:30:56 +0900 Subject: [PATCH 2/2] [ArrayList]: insert, size, isEmpty, contains, get, remove --- .idea/.gitignore | 8 ++ .idea/gradle.xml | 17 +++ .idea/misc.xml | 8 ++ .idea/uiDesigner.xml | 124 ++++++++++++++++++ .idea/vcs.xml | 6 + .../List/ArrayList/ArrayList_enduf7686.java | 74 +++++++++++ .../ArrayList/ArrayListTest_enduf7686.java | 104 +++++++++++++++ .../List/ArrayList/ArrayListTest_name.java | 30 +---- 8 files changed, 347 insertions(+), 24 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..7d3b3e8 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..de0c428 --- /dev/null +++ b/.idea/misc.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..2b63946 --- /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..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/List/ArrayList/ArrayList_enduf7686.java b/src/main/java/List/ArrayList/ArrayList_enduf7686.java index e69de29..fd4f555 100644 --- a/src/main/java/List/ArrayList/ArrayList_enduf7686.java +++ b/src/main/java/List/ArrayList/ArrayList_enduf7686.java @@ -0,0 +1,74 @@ +package List.ArrayList; + +import static java.lang.System.arraycopy; + +import List.List; + +public class ArrayList_enduf7686 implements List { + + private static final int DEFAULT_INIT_SIZE = 10; + + private Object[] array; + private int size; + + public ArrayList_enduf7686() { + this(DEFAULT_INIT_SIZE); + } + + public ArrayList_enduf7686(int initSize) { + this.array = new Object[initSize]; + this.size = 0; + } + + @Override + public void insert(E data) { + array[size++] = data; + + if (array.length == size) { + Object[] temp = array.clone(); + + array = new Object[size + DEFAULT_INIT_SIZE]; + arraycopy(temp, 0, array, 0, temp.length); + } + } + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + @Override + public boolean contains(E o) { + for (int i = 0; i <= size; i++) { + if (o.equals(array[i])) { + return true; + } + } + + return false; + } + + @Override + @SuppressWarnings("unchecked") + public E get(int index) { + return (E) array[index]; + } + + @Override + @SuppressWarnings("unchecked") + public E remove(int index) { + E temp = (E) array[index]; + + for (int idx = index + 1; idx < array.length; idx++) { + array[idx - 1] = array[idx]; + } + array[--size] = null; + + return temp; + } +} diff --git a/src/test/java/List/ArrayList/ArrayListTest_enduf7686.java b/src/test/java/List/ArrayList/ArrayListTest_enduf7686.java index e69de29..4f8951f 100644 --- a/src/test/java/List/ArrayList/ArrayListTest_enduf7686.java +++ b/src/test/java/List/ArrayList/ArrayListTest_enduf7686.java @@ -0,0 +1,104 @@ +package List.ArrayList; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +import List.List; +import org.junit.jupiter.api.Test; + +public class ArrayListTest_enduf7686 { + + @Test + void ArrayList의_생성_및_초기화() { + // 구현 후 수정 + List list = new ArrayList_enduf7686<>(); + + assertThat(list).isNotNull(); + } + + @Test + void 데이터_5개_저장() { + // 구현 후 수정 + List list = new ArrayList_enduf7686(); + + list.insert(11); + list.insert(11); + list.insert(22); + list.insert(22); + list.insert(33); + + assertThat(list.size()).isEqualTo(5); + assertThat(list.get(0)).isEqualTo(11); + assertThat(list.get(1)).isEqualTo(11); + assertThat(list.get(2)).isEqualTo(22); + assertThat(list.get(3)).isEqualTo(22); + assertThat(list.get(4)).isEqualTo(33); + } + + + @Test + void 데이터_5개_저장_후_22인_데이터_모두_삭제() { + // 구현 후 수정 + List list = new ArrayList_enduf7686(); + + list.insert(11); + list.insert(11); + list.insert(22); + list.insert(22); + list.insert(33); + + // Iterable을 구현하면 enhanced for loop를 사용할 수 있습니다. + for (int i = 0; i < list.size(); i++) { + if (list.get(i) == 22) { + list.remove(i); + i--; // 삭제되면 index가 조정되므로 해당 index부터 다시 확인해야 합니다. + } + } + + assertThat(list.size()).isEqualTo(3); + assertThat(list.get(0)).isEqualTo(11); + assertThat(list.get(1)).isEqualTo(11); + assertThat(list.get(2)).isEqualTo(33); + } + + @Test + void 데이터_5개_저장_후_데이터_확인() { + // 구현 후 수정 + List list = new ArrayList_enduf7686(); + + list.insert(11); + list.insert(11); + list.insert(22); + list.insert(22); + list.insert(33); + + assertThat(list.contains(11)).isEqualTo(true); + assertThat(list.contains(12)).isEqualTo(false); + assertThat(list.contains(22)).isEqualTo(true); + assertThat(list.contains(33)).isEqualTo(true); + assertThat(list.contains(34)).isEqualTo(false); + } + + @Test + void 데이터_15개_저장_후_데이터_확인() { + // 구현 후 수정 + List list = new ArrayList_enduf7686(); + + list.insert(11); + list.insert(11); + list.insert(22); + list.insert(22); + list.insert(33); + list.insert(33); + list.insert(44); + list.insert(44); + list.insert(44); + list.insert(55); + list.insert(55); + list.insert(55); + list.insert(66); + list.insert(77); + list.insert(88); + + assertThat(list.size()).isEqualTo(15); + } +} \ No newline at end of file diff --git a/src/test/java/List/ArrayList/ArrayListTest_name.java b/src/test/java/List/ArrayList/ArrayListTest_name.java index 36d9c93..fc87e3e 100644 --- a/src/test/java/List/ArrayList/ArrayListTest_name.java +++ b/src/test/java/List/ArrayList/ArrayListTest_name.java @@ -1,16 +1,16 @@ package List.ArrayList; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; - import List.List; import org.junit.jupiter.api.Test; -public class ArrayListTest_enduf7686 { +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +public class ArrayListTest_name { @Test void ArrayList의_생성_및_초기화() { // 구현 후 수정 - List list = new ArrayList_enduf7686(); + List list = new ArrayList_name(); assertThat(list).isNotNull(); } @@ -18,7 +18,7 @@ public class ArrayListTest_enduf7686 { @Test void 데이터_5개_저장() { // 구현 후 수정 - List list = new ArrayList_enduf7686(); + List list = new ArrayList_name(); list.insert(11); list.insert(11); @@ -38,7 +38,7 @@ public class ArrayListTest_enduf7686 { @Test void 데이터_5개_저장_후_22인_데이터_모두_삭제() { // 구현 후 수정 - List list = new ArrayList_enduf7686(); + List list = new ArrayList_name(); list.insert(11); list.insert(11); @@ -59,22 +59,4 @@ public class ArrayListTest_enduf7686 { assertThat(list.get(1)).isEqualTo(11); assertThat(list.get(2)).isEqualTo(33); } - - @Test - void 데이터_5개_저장_후_데이터_확인() { - // 구현 후 수정 - List list = new ArrayList_enduf7686(); - - list.insert(11); - list.insert(11); - list.insert(22); - list.insert(22); - list.insert(33); - - assertThat(list.contains(11)).isEqualTo(true); - assertThat(list.contains(12)).isEqualTo(false); - assertThat(list.contains(22)).isEqualTo(true); - assertThat(list.contains(33)).isEqualTo(true); - assertThat(list.contains(34)).isEqualTo(false); - } } \ No newline at end of file