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
73 changes: 73 additions & 0 deletions src/main/java/List/ArrayList/ArrayList_JAEKWANG97.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package List.ArrayList;

import List.List;

public class ArrayList_JAEKWANG97<E> implements List<E> {
private static final int DEFAULT_CAPACITY = 10;
private int size;
private Object[] elementData;

public ArrayList_JAEKWANG97() {
this.size = 0;
this.elementData = new Object[DEFAULT_CAPACITY];
}

@Override
public boolean contains(Object o) {
for (int i = 0; i < size; i++) {
if (elementData[i].equals(o)) {
return true;
}
}
return false;
}

@SuppressWarnings("unchecked")
@Override
public E get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException();
}
return (E) elementData[index];
}

@Override
public void insert(Object data) {
elementData[size] = data;
size++;

if (size == elementData.length) {
grow();
}
}
Comment on lines +34 to +42
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ €๋Š” ์ถ”๊ฐ€ ์‹œ size๋ฅผ ํ™•์ธ ์šฉ๋Ÿ‰์„ ๋Š˜๋ ค์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. size๊ฐ€ ์šฉ๋Ÿ‰์„ ๋„˜์œผ๋ฉด, 2๋ฐฐ๋กœ ๋ฐ”๋กœ ๋Š˜๋ ค์ฃผ๊ฒŒ ๋˜๋ฉด ์ถ”๊ฐ€๋กœ element๋ฅผ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์„๊นŒ์š”? @JAEKWANG97 ๋‹˜์˜ ์˜๊ฒฌ์ด ๊ถ๊ธˆํ•ด์š”!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ €๋„ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hellomatia ๋‹˜ ์ข‹์€ ์ง€์  ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ง์”€ํ•ด์ฃผ์‹  ๋Œ€๋กœ, size๊ฐ€ ์šฉ๋Ÿ‰์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ 2๋ฐฐ๋กœ ๋Š˜๋ฆฌ๋Š” ๋กœ์ง์€ ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ท€์ค‘ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๋งŽ์ด ๋ฐฐ์šฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!


@Override
public boolean isEmpty() {
return size == 0;
}

@SuppressWarnings("unchecked")
@Override
public E remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException();
}
E removedElement = (E) elementData[index];
System.arraycopy(elementData, index + 1, elementData, index, size - index - 1);
size--;
return removedElement;
}

@Override
public int size() {
return size;
}

private void grow() {
int newCapacity = elementData.length * 2;
Object[] newElementData = new Object[newCapacity];
System.arraycopy(elementData, 0, newElementData, 0, elementData.length);
elementData = newElementData;
}

}
61 changes: 61 additions & 0 deletions src/test/java/List/ArrayList/ArrayListTest_JAEKWANG97.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package List.ArrayList;

import List.List;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;

public class ArrayListTest_JAEKWANG97 {

@Test
void ArrayList์˜_์ƒ์„ฑ_๋ฐ_์ดˆ๊ธฐํ™”() {
// ๊ตฌํ˜„ ํ›„ ์ˆ˜์ •
List<Integer> list = new ArrayList_JAEKWANG97<Integer>();

assertThat(list).isNotNull();
}

@Test
void ๋ฐ์ดํ„ฐ_5๊ฐœ_์ €์žฅ() {
// ๊ตฌํ˜„ ํ›„ ์ˆ˜์ •
List<Integer> list = new ArrayList_name<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_name<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);
}
}
1 change: 0 additions & 1 deletion src/test/java/List/ArrayList/ArrayListTest_name.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ public class ArrayListTest_name {
assertThat(list.get(4)).isEqualTo(33);
}


@Test
void ๋ฐ์ดํ„ฐ_5๊ฐœ_์ €์žฅ_ํ›„_22์ธ_๋ฐ์ดํ„ฐ_๋ชจ๋‘_์‚ญ์ œ() {
// ๊ตฌํ˜„ ํ›„ ์ˆ˜์ •
Expand Down