[JAVA ] List Interface
๋ฆฌ์คํธ์ ์์ ๊ฐ๋ ์ธ Collection์ ๋ํด ๋จผ์ ๋ณด๊ณ ์ค๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
[JAVA ] Collection
Collection Framework ? • ๊ฐ์ฒด์ ๊ทธ๋ฃน • ์๋ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํฉ๋๋ค. • Collection ์ธํฐํ์ด์ค๋ List, Set, Queue ์ธํฐํ์ด์ค๊ฐ ํ์ฅ๋๋ ๋ฃจํธ ์ธํฐํ์ด์ค • Java์์๋ ๋ชจ๋ Collecti..
dodokwon.tistory.com
LIST INTERFACE
• ์ ์ฅ ์์๊ฐ ์๋(์ ์ง๋๋) ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํฉ๋๋ค.
ex) Vector, ArrayList, LinkedList, Stack, Queue
1. ArrayList
• ๋ด๋ถ์ ์ผ๋ก Array๋ฅผ ์ด์ฉํ์ฌ ์์๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ Index๋ฅผ ์ด์ฉํด ์์์ ๋น ๋ฅธ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์กฐํ ์ฑ๋ฅ Good, ๋จ๋ฐฉํฅ ํฌ์ธํฐ ๊ตฌ์กฐ
• ํ์ง๋ง ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐ ๋ณ๊ฒฝ์ด ๋ณต์กํฉ๋๋ค. ( ์ ๋ฐฐ์ด ์์ฑ ํ ๊ธฐ์กด ์์ ์ฎ๊ธฐ๊ธฐ )
• ์ด๋ ์์์ ์ถ๊ฐ ๋ฐ ์ญ์ ์์ ์๊ฐ์ด ๋งค์ฐ ๊ธธ์ด์ง๊ฒ ๋ฉ๋๋ค.
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
ArrayList<Integer> al = new ArrayList<Integer>();
for (int i = 1; i <= 5; i++)
al.add(i);
System.out.println(al);
al.remove(3);
System.out.println(al);
for (int i = 0; i < al.size(); i++)
System.out.print(al.get(i) + " ");
}
}
[1, 2, 3, 4, 5]
[1, 2, 3, 5]
1 2 3 5
2. LinkedList
• ๋ด๋ถ์ ์ผ๋ก ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ์ฌ ์์๋ฅผ ์ ์ฅํฉ๋๋ค.
• ์ ์ฅ๋ ์์๋ ๋น์์ฐจ์ ์ผ๋ก ๋ถํฌ๋๋ฉฐ Link๋ก ์ฐ๊ฒฐํ์ฌ ๊ตฌ์ฑํฉ๋๋ค.
- ๋ฐ์ดํฐ์ ์ฝ์ , ์ญ์ ์ ์์น ์ ๋ณด๋ง ์์ ํ๋ฏ๋ก ์ ์ฉ, ์๋ฐฉํฅ ํฌ์ธํฐ ๊ตฌ์กฐ
• ๋จ์ผ ์ฐ๊ฒฐ๋ฆฌ์คํธ - ๋ค์ ์์์ ๋ํ ์ฐธ์กฐ๋ง ๊ฐ์ง๋ ๋ฆฌ์คํธ, ์ด์ ์์๋ก ์ ๊ทผ์ด ์ด๋ ต๋ค.
• ์ด์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ - ๋ค์์์์ ์ด์ ์์์ ๋ํ ์ฐธ์กฐ ๋ ๋ค ๊ฐ์ง๋ ๋ฆฌ์คํธ
์ด์ ๋ํด ์ ์ ๋ฆฌ๋ ๋ธ๋ก๊ทธ๊ฐ ์์ด ๋งํฌ๋ฅผ ์ฒจ๋ถํ์ต๋๋ค. ๐
[์๋ฃ๊ตฌ์กฐ] ์ฐ๊ฒฐ๋ฆฌ์คํธ(Linked List): ๋จ์ผ์ฐ๊ฒฐ๋ฆฌ์คํธ, ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ๋ ๊ณผ ๊ตฌํ
velog.io
class GFG {
public static void main(String[] args){
LinkedList<Integer> ll = new LinkedList<Integer>();
for (int i = 1; i <= 5; i++)
ll.add(i);
System.out.println(ll);
ll.remove(3);
System.out.println(ll);
for (int i = 0; i < ll.size(); i++)
System.out.print(ll.get(i) + " ");
}
}
[1, 2, 3, 4, 5]
[1, 2, 3, 5]
1 2 3 5
3. Vector
• ArrayList ํด๋์ค์ ๊ฐ์ ๋์์ ์ํํ๋ ํด๋์ค๋ก List ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๋๋ค.
• ArrayList์์ ์ฌ์ฉํ๋ ๋ฉ์๋๊ฐ ๊ฑฐ์ ๊ฐ์ผ๋ฉฐ ํ์ฌ๋ ๊ธฐ์กด์ฝ๋์์ ํธํ์ฑ์ ์ํด์๋ง ๋จ์์ผ๋ฏ๋ก ArrayList ํด ๋์ค๋ฅผ ์ฌ์ฉํ์.
๋จผ์ ์๋ฃ๊ตฌ์กฐ์์ ์ค๋ช ํ๋ Stack๊ณผ Queue์ ๋ํด ์์๋ณด๊ณ ์ค๋ฉด ์ข์ ๊ฒ๊ฐ์ต๋๋ค.
์ด์ ๋ํด ์ ์ ๋ฆฌ๋ ๋ธ๋ก๊ทธ ๋งํฌ๋ฅผ ์ฐธ์กฐํ๊ฒ ์ต๋๋ค.๐ ์คํ, ํ ๊ฐ๋ /๋น๊ต/ํ์ฉ์์
** ์๋ฃ๊ตฌ์กฐ : ์๋ฃ(Data)์ ์งํฉ์ด์, ์ ์ฅ๊ณต๊ฐ(Memory)์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์๋ ๊ท์น์ ๋ฐ๋ผ ํจ์จ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ ์๋๋ก ๊ตฌ๋ถํ์ฌ ํํํ ๊ฒ.
** ํจ์จ์ ์ธ ์ฒ๋ฆฌ : ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์ฝ์ , ์ญ์ , ํ์๊ณผ ๊ฐ์ ์ฐ์ฐ์ ๋ํ ํจ์จ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค. Big-O ๊ฐ๋ ๊ณผ ์๊ฐ๋ณต์ก๋์ ๋ํด ์๊ณ ์์ผ๋ฉด ๋ ์ดํด๊ฐ ์ฝ๋ค.
4. Stack
• ์คํ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ ์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉด์ LIFO (Last In First Out)์ ์๋ฉํฑ์ ๋ฐ๋ฅด๋ ์๋ฃ๊ตฌ์กฐ
• ๊ฐ์ฅ ๋์ค์ ์ ์ฅ๋( push ) ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ์ธ์ถ( pop )๋๋ ๊ตฌ์กฐ
• Vector์ ํ์ ํด๋์ค๋ก ์์๋ฐ์ ์ ํ์ ์ธ ์คํ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ํด๋์ค ์ ๊ณต
import java.util.*;
public class GFG {
public static void main(String args[])
{
Stack<String> stack = new Stack<String>();
stack.push("Geeks");
stack.push("For");
stack.push("Geeks");
stack.push("Geeks");
Iterator<String> itr = stack.iterator();
while (itr.hasNext()) {
System.out.print(itr.next() + " ");
}
System.out.println();
stack.pop();
itr = stack.iterator();
while (itr.hasNext()) {
System.out.print(itr.next() + " ");
}
}
}
Geeks For Geeks Geeks
Geeks For Geeks
** ๊ด๋ จ ๋ฉ์๋ **
boolean empty() | ํด๋น ์คํ์ด ๋น์ด ์์ผ๋ฉด true๋ฅผ, ๋น์ด ์์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํจ. |
E peek() | ํด๋น ์คํ์ ์ ์ผ ์๋จ์ ์๋(์ ์ผ ๋ง์ง๋ง์ผ๋ก ์ ์ฅ๋) ์์๋ฅผ ๋ฐํํจ. |
E pop() | ํด๋น ์คํ์ ์ ์ผ ์๋จ์ ์๋(์ ์ผ ๋ง์ง๋ง์ผ๋ก ์ ์ฅ๋) ์์๋ฅผ ๋ฐํํ๊ณ , ํด๋น ์์๋ฅผ ์คํ์์ ์ ๊ฑฐํจ. |
E push(E item) | ํด๋น ์คํ์ ์ ์ผ ์๋จ์ ์ ๋ฌ๋ ์์๋ฅผ ์ฝ์ ํจ. |
int search(Object o) | ํด๋น ์คํ์์ ์ ๋ฌ๋ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ ์์น์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํจ. ์ด๋ ์ธ๋ฑ์ค๋ ์ ์ผ ์๋จ์ ์๋(์ ์ผ ๋ง์ง๋ง์ผ๋ก ์ ์ฅ๋) ์์์ ์์น๋ถํฐ 0์ด ์๋ 1๋ถํฐ ์์ํจ. |
5. Queue
• ํ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ ์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉด์ FIFO (First In First Out)์ ์๋ฉํฑ์ ๋ฐ๋ฅด๋ ์๋ฃ๊ตฌ์กฐ
• ๊ฐ์ฅ ๋จผ์ ์ ์ฅ๋( push ) ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ์ธ์ถ( pop )๋๋ ๊ตฌ์กฐ
• ํ์ ์ธํฐํ์ด์ค๋ฅผ ์ง๊ฐ์ ์ ์ผ๋ก ๊ตฌํํ ํด๋์ค๋ ์๋นํ ๋ง์ต๋๋ค. ๊ทธ ์ค์์๋ Deque ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ LinkedList ํด๋์ค๊ฐ ํ์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๋๋ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
** ๊ด๋ จ ๋ฉ์๋ **
boolean add(E e) | ํด๋น ํ์ ๋งจ ๋ค์ ์ ๋ฌ๋ ์์๋ฅผ ์ฝ์
ํจ. ๋ง์ฝ ์ฝ์ ์ ์ฑ๊ณตํ๋ฉด true๋ฅผ ๋ฐํํ๊ณ , ํ์ ์ฌ์ ๊ณต๊ฐ์ด ์์ด ์ฝ์ ์ ์คํจํ๋ฉด IllegalStateException์ ๋ฐ์์ํด. |
E element() | ํด๋น ํ์ ๋งจ ์์ ์๋(์ ์ผ ๋จผ์ ์ ์ฅ๋) ์์๋ฅผ ๋ฐํํจ. |
boolean offer(E e) | ํด๋น ํ์ ๋งจ ๋ค์ ์ ๋ฌ๋ ์์๋ฅผ ์ฝ์ ํจ. |
E peek() | ํด๋น ํ์ ๋งจ ์์ ์๋(์ ์ผ ๋จผ์ ์ ์ฅ๋) ์์๋ฅผ ๋ฐํํจ. ๋ง์ฝ ํ๊ฐ ๋น์ด์์ผ๋ฉด null์ ๋ฐํํจ. |
E poll() | ํด๋น ํ์ ๋งจ ์์ ์๋(์ ์ผ ๋จผ์ ์ ์ฅ๋) ์์๋ฅผ ๋ฐํํ๊ณ , ํด๋น ์์๋ฅผ ํ์์ ์ ๊ฑฐํจ. ๋ง์ฝ ํ๊ฐ ๋น์ด์์ผ๋ฉด null์ ๋ฐํํจ. |
E remove() | ํด๋น ํ์ ๋งจ ์์ ์๋(์ ์ผ ๋จผ์ ์ ์ฅ๋) ์์๋ฅผ ์ ๊ฑฐํจ. |
ํ์ต์ ๋ง์ ๋์์ด ๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ต๋๋ค. ๐
์ฐธ์กฐ ๋ฐ ์ถ์ฒ