Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

124 changes: 124 additions & 0 deletions .idea/uiDesigner.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

74 changes: 74 additions & 0 deletions src/main/java/List/ArrayList/ArrayList_enduf7686.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package List.ArrayList;

import static java.lang.System.arraycopy;

import List.List;

public class ArrayList_enduf7686<E> implements List<E> {

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;
}
}
104 changes: 104 additions & 0 deletions src/test/java/List/ArrayList/ArrayListTest_enduf7686.java
Original file line number Diff line number Diff line change
@@ -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<Integer> list = new ArrayList_enduf7686<>();

assertThat(list).isNotNull();
}

@Test
void 데이터_5개_저장() {
// 구현 후 수정
List<Integer> list = new ArrayList_enduf7686<Integer>();

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<Integer> list = new ArrayList_enduf7686<Integer>();

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<Integer> list = new ArrayList_enduf7686<Integer>();

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<Integer> list = new ArrayList_enduf7686<Integer>();

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);
}
}