1. 컬렉션 프레임워크란?
Java 컬렉션 프레임워크(Collection Framework)는 여러 개의 데이터를 효율적으로 저장하고 관리할 수 있도록 제공되는 표준화된 클래스 및 인터페이스의 집합입니다. 배열보다 더 유연하고 다양한 기능을 제공하여 데이터 처리 및 조작을 쉽게 할 수 있습니다.
컬렉션 프레임워크의 주요 특징:
- 자료 구조의 표준화: 다양한 데이터 구조를 쉽게 사용 가능
- 재사용성: 자바의 표준 라이브러리에서 제공하는 컬렉션 클래스를 활용 가능
- 성능 최적화: 다양한 자료 구조를 지원하여 효율적인 데이터 처리 가능
2. 주요 인터페이스 및 구현 클래스
컬렉션 프레임워크는 다음과 같은 주요 인터페이스와 클래스로 구성됩니다.
인터페이스설명주요 구현 클래스
List | 순서가 있는 자료 구조, 중복 허용 | ArrayList, LinkedList, Vector |
Set | 순서 없음, 중복 허용하지 않음 | HashSet, LinkedHashSet, TreeSet |
Map | 키-값(Key-Value) 쌍으로 저장, 키 중복 불가 | HashMap, LinkedHashMap, TreeMap |
Queue | FIFO(First-In-First-Out) 구조 | LinkedList, PriorityQueue |
3. List (순서가 있는 자료 구조)
List 인터페이스는 요소의 순서를 유지하며 중복 저장을 허용합니다.
3.1 ArrayList
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
System.out.println("리스트 요소: " + list);
list.remove("Banana");
System.out.println("Banana 삭제 후: " + list);
}
}
특징:
- 내부적으로 배열을 사용하여 데이터를 저장
- 삽입, 삭제가 빈번한 경우 LinkedList를 사용하는 것이 유리함
3.2 LinkedList
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>();
list.add(10);
list.add(20);
list.addFirst(5);
list.addLast(30);
System.out.println("LinkedList 요소: " + list);
}
}
특징:
- 노드 기반의 연결 리스트 구조
- 삽입, 삭제가 빠르지만 검색 속도는 ArrayList보다 느림
4. Set (중복을 허용하지 않는 자료 구조)
4.1 HashSet
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("Java"); // 중복 값 추가 시 무시됨
System.out.println("Set 요소: " + set);
}
}
특징:
- 요소의 순서를 보장하지 않음
- 중복된 요소를 허용하지 않음
- 빠른 검색 속도 제공
5. Map (키-값 저장 방식)
5.1 HashMap
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "Apple");
map.put(2, "Banana");
map.put(3, "Cherry");
System.out.println("HashMap 요소: " + map);
}
}
특징:
- 키-값 쌍으로 저장하며, 키는 중복을 허용하지 않음
- 빠른 검색 속도를 제공하지만 순서를 유지하지 않음
6. Queue (FIFO 구조)
6.1 PriorityQueue
import java.util.PriorityQueue;
public class PriorityQueueExample {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.offer(30);
pq.offer(10);
pq.offer(20);
System.out.println("PriorityQueue 요소: " + pq);
System.out.println("가장 작은 요소: " + pq.poll()); // 10 출력 후 삭제
}
}
특징:
- 우선순위가 높은 요소부터 제거됨
- 기본적으로 작은 숫자부터 우선적으로 처리
7. 컬렉션 프레임워크 정리
인터페이스 | 특징 | 대표적인 구현 클래스 |
List | 순서 보장, 중복 허용 | ArrayList, LinkedList |
Set | 중복 허용하지 않음, 순서 보장되지 않음 | HashSet, TreeSet |
Map | 키-값 저장, 키 중복 불가 | HashMap, TreeMap |
Queue | FIFO 구조, 우선순위 큐 지원 | LinkedList, PriorityQueue |
8. 결론
이번 글에서는 Java의 컬렉션 프레임워크를 구성하는 주요 인터페이스와 구현 클래스에 대해 알아보았습니다. 각 컬렉션의 특징을 이해하고 적절한 자료 구조를 선택하면 더 효율적인 프로그래밍이 가능합니다.
다음 글에서는 Java 스트림(Stream) API를 활용한 데이터 처리 방법에 대해 다뤄보겠습니다!
'기술 학습' 카테고리의 다른 글
JAVA 기초 개념과 실습 예제 (0) | 2025.02.09 |
---|---|
AI 코딩 비서, 어디까지 써봤니? 개발자의 AI 활용 일기 (1) | 2025.02.08 |
Spring Boot에서 REST API 설계 및 구현 (1) | 2025.02.07 |
Spring Boot에서 JWT를 활용한 인증 구현 (1) | 2025.02.05 |
Spring Boot + Redis로 세션 공유하기 (0) | 2025.02.04 |