5.0 KiB
5.0 KiB
자바 Collections 쉽게 배우기
자바에서 Collections Framework는 배열보다 더 강력한 자료구조를 제공한다.
배열은 크기가 고정되지만, 컬렉션은 동적으로 크기를 조정할 수 있으며, 다양한 데이터 구조를 제공한다.
컬렉션은 크게 다음과 같은 주요 인터페이스로 구성된다.
List: 순서가 있는 자료구조 (배열과 유사, 중복 허용)Set: 중복을 허용하지 않는 자료구조Queue: FIFO(선입선출) 방식의 자료구조Map: 키-값 쌍을 저장하는 자료구조
1. 주요 컬렉션 클래스 및 메서드 정리
(1) List 인터페이스를 구현하는 클래스 (ArrayList, LinkedList)
| 클래스 | 특징 |
|---|---|
ArrayList<E> |
크기가 동적으로 변하는 배열 |
LinkedList<E> |
이중 연결 리스트 구조, 삽입·삭제 빠름 |
| 메서드 | 설명 |
|---|---|
add(E e) |
요소 추가 |
get(int index) |
특정 위치의 요소 반환 |
remove(int index) |
특정 위치의 요소 삭제 |
size() |
리스트 크기 반환 |
contains(Object o) |
특정 요소 포함 여부 확인 |
indexOf(Object o) |
특정 요소의 인덱스 반환 |
예제 코드:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
System.out.println(list.get(0)); // Apple
System.out.println(list.contains("Banana")); // true
(2) Set 인터페이스를 구현하는 클래스 (HashSet, TreeSet)
| 클래스 | 특징 |
|---|---|
HashSet<E> |
중복 없는 요소 저장, 순서 보장 안 됨 |
TreeSet<E> |
정렬된 상태 유지 |
| 메서드 | 설명 |
|---|---|
add(E e) |
요소 추가 |
remove(Object o) |
요소 삭제 |
contains(Object o) |
요소 포함 여부 확인 |
size() |
크기 반환 |
clear() |
모든 요소 제거 |
예제 코드:
Set<Integer> set = new HashSet<>();
set.add(10);
set.add(20);
set.add(10); // 중복된 값 추가 X
System.out.println(set.size()); // 2
System.out.println(set.contains(20)); // true
(3) Queue 인터페이스를 구현하는 클래스 (LinkedList, PriorityQueue)
| 클래스 | 특징 |
|---|---|
LinkedList<E> |
FIFO(선입선출) 방식으로 동작 |
PriorityQueue<E> |
우선순위에 따라 정렬 |
| 메서드 | 설명 |
|---|---|
offer(E e) |
요소 추가 (큐의 끝에) |
poll() |
첫 번째 요소 반환 후 제거 |
peek() |
첫 번째 요소 조회 (삭제 X) |
isEmpty() |
큐가 비어 있는지 확인 |
예제 코드:
Queue<String> queue = new LinkedList<>();
queue.offer("A");
queue.offer("B");
System.out.println(queue.poll()); // A (먼저 들어온 요소가 제거됨)
System.out.println(queue.peek()); // B (두 번째 요소 조회)
(4) Map 인터페이스를 구현하는 클래스 (HashMap, TreeMap)
| 클래스 | 특징 |
|---|---|
HashMap<K, V> |
키-값 쌍 저장, 순서 보장 안 됨 |
TreeMap<K, V> |
키 기준으로 정렬 |
| 메서드 | 설명 |
|---|---|
put(K key, V value) |
키-값 추가 |
get(Object key) |
키에 해당하는 값 반환 |
remove(Object key) |
키에 해당하는 요소 삭제 |
containsKey(Object key) |
특정 키 존재 여부 확인 |
containsValue(Object value) |
특정 값 존재 여부 확인 |
예제 코드:
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 100);
map.put("Banana", 200);
System.out.println(map.get("Apple")); // 100
System.out.println(map.containsKey("Banana")); // true
2. Collections 유틸리티 클래스
자바에서는 java.util.Collections 클래스를 제공하여 컬렉션을 조작하는 다양한 기능을 지원한다.
| 메서드 | 설명 |
|---|---|
sort(List<T> list) |
리스트 정렬 |
reverse(List<T> list) |
리스트 역순 정렬 |
shuffle(List<T> list) |
요소 섞기 |
max(Collection<T> coll) |
최대값 반환 |
min(Collection<T> coll) |
최소값 반환 |
예제 코드:
List<Integer> numbers = Arrays.asList(5, 3, 8, 1);
Collections.sort(numbers);
System.out.println(numbers); // [1, 3, 5, 8]
Collections.reverse(numbers);
System.out.println(numbers); // [8, 5, 3, 1]
3. 정리
✅ List : 순서가 있는 자료구조 (중복 허용)
✅ Set : 중복을 허용하지 않는 자료구조
✅ Queue : 선입선출(FIFO) 자료구조
✅ Map : 키-값 쌍을 저장하는 자료구조
✅ Collections 유틸리티 클래스를 활용하면 컬렉션을 더욱 편리하게 조작 가능!
즉, 자바의 컬렉션을 잘 활용하면 효율적인 데이터 관리와 조작이 가능하다!