Java/알고리즘

자료구조 (ArrayList, HashMap, Stack, Queue, Deque)

댕주 2025. 3. 12. 22:53

🔹 1) 배열 (int[])

int[] arr = new int[5]; // 크기 5인 배열
int[] arr2 = {1, 2, 3, 4, 5}; // 배열 초기화

 

🔹 2) 리스트 (ArrayList)

- 배열보다 크기 변경이 자유로움

import java.util.ArrayList;

ArrayList<Integer> list = new ArrayList<>();
list.add(10); // 추가
list.add(20);
System.out.println(list.get(0)); // 첫 번째 원소
list.remove(0); // 첫 번째 원소 삭제
System.out.println(list.size()); // 리스트 크기

 

🔹 3) 해시맵 (HashMap)

- Key-Value 저장, 탐색이 빠름 (O(1))

import java.util.HashMap;

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 3);  // 추가
map.put("banana", 5);
System.out.println(map.get("apple")); // 3
map.remove("banana"); // 삭제
System.out.println(map.containsKey("apple")); // true

 

🔹 4) 스택 (Stack)

- LIFO(Last In, First Out)

import java.util.Stack;

Stack<Integer> stack = new Stack<>();
stack.push(10); // 추가
stack.push(20);
System.out.println(stack.peek()); // 20 (맨 위 요소 확인)
System.out.println(stack.pop()); // 20 (맨 위 요소 꺼내기)

 

🔹 5) 큐 (Queue - LinkedList)

- FIFO(First In, First Out)

import java.util.LinkedList;
import java.util.Queue;

Queue<Integer> queue = new LinkedList<>();
queue.add(10); // 추가
queue.add(20);
System.out.println(queue.poll()); // 10 (맨 앞 요소 꺼내기)
System.out.println(queue.peek()); // 20 (맨 앞 요소 확인)

 

🔹 6) 덱 (Deque)

- 양방향으로 추가/삭제 가능 (ArrayDeque 추천)

import java.util.ArrayDeque;
import java.util.Deque;

Deque<Integer> deque = new ArrayDeque<>();
deque.addFirst(10); // 앞에 추가
deque.addLast(20); // 뒤에 추가
System.out.println(deque.pollFirst()); // 10 (앞에서 꺼내기)
System.out.println(deque.pollLast()); // 20 (뒤에서 꺼내기)