ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ”Ž List ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค

Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๋ชจ๋“  List ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

 

1. ์š”์†Œ์˜ ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋œ๋‹ค.

2. ๊ฐ™์€ ์š”์†Œ์˜ ์ค‘๋ณต ์ €์žฅ์„ ํ—ˆ์šฉํ•œ๋‹ค.

 

โ“ ๋Œ€ํ‘œ์ ์ธ List ์ปฌ๋ ‰์…˜ ๋ฆฌ์ŠคํŠธ์— ์†ํ•˜๋Š” ํด๋ž˜์Šค

1. ArrayList<E>

2. LinkedList<E>

3. Vector<E>

4. Stack<E>

 

๐Ÿ“Œ ArrayList<E> ํด๋ž˜์Šค

ArrayList ํด๋ž˜์Šค๋Š” ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์ฆ‰, ArrayList ํด๋ž˜์Šค ์—ญ์‹œ๋„ Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ๊ตฌํ˜„์ฒด์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ฐ”๋กœ Collection ์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

 

ArrayList ํด๋ž˜์Šค๋Š” ๋ฐฐ์—ด์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด ๋ฐฐ์—ด ์š”์†Œ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ฐฐ์—ด์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ธ์Šคํ„ด์Šค์ด๋ฏ€๋กœ

๋งŒ์•ฝ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ์กด์˜ ์š”์†Œ๋“ค์„ ์˜ฎ๊ฒจ์•ผ ํ•˜๋Š” ๋ณต์žกํ•œ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด ๊ณผ์ •์€ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€๋งŒ, ์š”์†Œ์˜ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์ž‘์—…์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์— ๋งค์šฐ ๊ธธ์–ด์ง€๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋‹ค์Œ ์˜ˆ์ œ๋Š” ์—ฌ๋Ÿฌ ArrayList ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

// ArrayList ์—ญ์‹œ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™” ํ•˜๋“ฏ์ด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.
ArrayList<Integer> arrList = new ArrayList<Integer>();

// add() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ ์š”์†Œ์˜ ์ €์žฅ
arrList.add(40);
arrList.add(20);
arrList.add(30);
arrList.add(10);

// for ๋ฌธ๊ณผ get() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ ์š”์†Œ์˜ ์ถœ๋ ฅ
for (int i=0; i<arrList.size(); i++) {
    System.our.print(arrList.get(i) + " ");
}

// remove() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ ์š”์†Œ์˜ ์ œ๊ฑฐ
arrList.remove(1); // 1๋ฒˆ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ์ œ๊ฑฐ

// Enhanced for๋ฌธ๊ณผ get() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ ์š”์†Œ์˜ ์ถœ๋ ฅ
for (int e : arrList) {
    System.out.print(e + " ");
}

// Collections.sort() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ ์š”์†Œ์˜ ์ •๋ ฌ
Collections.sort(arrList);

// iterator() ๋ฉ”์†Œ๋“œ์™€ get() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ ์š”์†Œ์˜ ์ถœ๋ ฅ
Iterator<Integer> iter = arrList.iterator();
while(iter.hasNext()) { 
    System.out.print(iter.next() + " ");
}

// set() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ ์š”์†Œ์˜ ๋ณ€๊ฒฝ
arrList.set(0, 20);

for (int e : arrList) {
    System.out.prin(e + " ");
}

// size() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ ์š”์†Œ์˜ ์ด ๊ฐœ์ˆ˜
System.out.println("๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ: " + arrList.size());

์‹คํ–‰ ๊ฒฐ๊ณผ

์œ„ ์˜ˆ์ œ์ฒ˜๋Ÿผ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์˜ ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” for ๋ฌธ๊ณผ enhanced for ๋ฌธ, iterator() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ• ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โ“ List ์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”์†Œ๋“œ

List ์ธํ„ฐํŽ˜์ด์Šค๋Š” Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์œผ๋ฏ€๋กœ, Collection ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ •์˜ํ•œ ๋ฉ”์†Œ๋“œ๋„ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

List ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฃผ์š” ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฉ”์†Œ๋“œ ์„ค๋ช…
boolean add(E e) ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ(list)์— ์ „๋‹ฌ๋œ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•จ
void add(int index, E e) ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ • ์œ„์น˜์— ์ „๋‹ฌ๋œ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•จ
void clear() ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•จ
boolean contains(Object o) ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•จ
boolean equals(Object o) ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์™€ ์ „๋‹ฌ๋œ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€์ง€๋ฅผ ํ™•์ธํ•จ
E get(int index) ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ • ์œ„์น˜์— ์กด์žฌํ•˜๋Š” ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•จ
boolean isEmpty() ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•จ
iterator<E> iterator() ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์˜ ๋ฐ˜๋ณต์ž(iterator)๋ฅผ ๋ฐ˜ํ™˜ํ•จ
boolean remove(Object o) ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์—์„œ ์ „๋‹ฌ๋œ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•จ
boolean(int index) ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ • ์œ„์น˜์— ์กด์žฌํ•˜๋Š” ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•จ
E set(int index E e) ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ • ์œ„์น˜์— ์กด์žฌํ•˜๋Š” ์š”์†Œ๋ฅผ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ์ฒด๋กœ ๋Œ€์ฒดํ•จ

int size() ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์ด ์š”์†Œ์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•จ
Object[] toArray() ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ Object ํƒ€์ž…์˜ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•จ

 

๐Ÿ“Œ ArrayList ๊ด€๋ จ ์˜ˆ์ œ ์ฝ”๋“œ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ArrayList๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Integer[] arData = {40, 50, 90, 70, 10, 80, 20, 30, 100};
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(arData));

 

1. ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ

์—ฌ๊ธฐ์—์„œ Collections ํด๋ž˜์Šค์˜ sort ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ์˜ ์„ค๋ช…์„ ๋ณด๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ list ํƒ€์ž…์„ ๋ฐ›๋Š”๋‹ค๊ณ  ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ArrayList๋Š” List ํด๋ž˜์Šค์— ์†ํ•˜๋Š” ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์—

ArrayList๋ฅผ ๋ถ€๋ชจ ํด๋ž˜์Šค, List ํด๋ž˜์Šค๋ฅผ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ผ๊ณ  ๋†“๋Š”๋‹ค๋ฉด

์—…์บ์ŠคํŒ…(Up casring: ์ž์‹ ํƒ€์ž…์„ ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ)์œผ๋กœ ArrayList๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Collections.sort(datas);
System.out.println(datas); // [10, 20, 30, 40, 50, 70, 80, 90, 100]

 

์ฐธ๊ณ ๋กœ ArrayList์—์„œ๋Š” toString()์„ ์žฌ์ •์˜ ํ•ด๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ๋ฐ”๋กœ ๊ฐ’์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 

2. ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ

sort()์ฒ˜๋Ÿผ ๋ฐ”๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ์™€ ๋น„์Šทํ•˜๊ฒŒ ๋ฐ”๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— sort()๋ฅผ ํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•œ ๋’ค์— reverseํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜๋Œ€๋กœ ์ •๋ ฌํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Collections.sort(datas);
Collections.reverse(datas);
System.out.println(datas); // [100, 90, 80, 70, 50, 40, 30, 20, 10]

 

3. ๋žœ๋คํ•˜๊ฒŒ ์„ž๊ธฐ

Collections.shuffle(datas);

 

4. ์ถ”๊ฐ€(์‚ฝ์ž…)ํ•˜๊ธฐ - 30 ๋’ค์— 60 ์‚ฝ์ž…ํ•œ๋‹ค

if(datas.contains(30)) {
    datas.add(datas.indexOf(30)+1, 6);
}

System.out.println(datas); // [80, 90, 40, 30, 60, 10, 50, 100, 20, 70]

 

5. ์ˆ˜์ •ํ•˜๊ธฐ - 10์„ 1๋กœ ์ˆ˜์ •ํ•œ๋‹ค

if(datas.contains(10)) {
    datas.set(datas.indexOf(10), 1);
}

 

6. ์‚ญ์ œ(๊ฐ’์œผ๋กœ ์‚ญ์ œ)ํ•˜๊ธฐ - 20์„ ์‚ญ์ œํ•œ๋‹ค

remove() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ’์œผ๋กœ ์‚ญ์ œ๋ฅผ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ์ฒด(Object) ํƒ€์ž…์˜ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ ํƒ€์ž…์ธ int๊ฐ€ ์•„๋‹ˆ๋ผ Integer.valueOf๋ฅผ ํ†ตํ•ด int๊ฐ’์„ ๋„˜๊ฒจ Integer ํƒ€์ž…์„ ๊ฐ–๋„๋ก ํ•ด์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊น๋‹ˆ๋‹ค.

if(datas.contains(20)) {
    datas.remove(Integer.valueOf(20));
}

 

7. ์‚ญ์ œ(์ธ๋ฑ์Šค๋กœ ์‚ญ์ œ)ํ•˜๊ธฐ - 50์„ ์‚ญ์ œํ•œ๋‹ค

if(datas.contains(50)) {
    datas.remove(datas.indexOf(50));
}
728x90
LIST