⚡ 1. Java Collections Framework란?
Java Collections Framework(JCF) 는 자료구조(컬렉션)를 효율적으로 다룰 수 있도록 제공하는 표준 라이브러리입니다.
List, Set, Queue, Map 등의 인터페이스와 이를 구현하는 다양한 클래스들을 포함하고 있습니다.
💡 Collections Framework의 핵심 기능
• 데이터 저장 & 관리 → 배열보다 유연한 데이터 구조 제공
• 정렬 & 검색 → Comparator, Comparable 지원
• 멀티스레드 환경 지원 → Concurrent 컬렉션 제공
⚡ 2. Java Collections Framework의 구조
Java 컬렉션 프레임워크는 다음과 같은 핵심 인터페이스로 구성됩니다.
🏗 Java Collections Framework 계층 구조
Collection (인터페이스)
│
├── List (순서 유지, 중복 허용)
│ ├── ArrayList
│ ├── LinkedList
│ ├── Vector
│ ├── Stack
│
├── Set (중복 허용 안함, 순서 없음)
│ ├── HashSet
│ ├── LinkedHashSet
│ ├── TreeSet
│
└── Queue (FIFO 구조)
├── LinkedList
├── PriorityQueue
├── ArrayDeque
Map (Key-Value 구조, 중복 Key 불가)
├── HashMap
├── LinkedHashMap
├── TreeMap
├── Hashtable
⚡ 3. Java 컬렉션 종류별 특징
✅ 1) List (순서 유지, 중복 허용)
클래스 | 특징 |
ArrayList | 배열 기반 리스트, 검색 속도가 빠름 (O(1)) |
LinkedList | 연결 리스트 기반, 삽입/삭제 속도가 빠름 (O(1)) |
Vector | ArrayList와 유사하지만 동기화 지원 |
Stack | 후입선출(LIFO) 방식의 리스트 |
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
System.out.println(list); // [A, B]
✅ 2) Set (중복 X, 순서 없음)
클래스 | 특징 |
HashSet | 중복 없는 요소 저장, 순서 보장 X |
LinkedHashSet | 입력 순서 유지 |
TreeSet | 정렬된 상태 유지 (O(logN)) |
Set<String> set = new HashSet<>();
set.add("A");
set.add("A"); // 중복 저장 안됨
System.out.println(set); // [A]
✅ 3) Queue (FIFO, 선입선출)
클래스 | 특징 |
LinkedList | 큐(Queue)와 리스트(List) 기능 제공 |
PriorityQueue | 우선순위 기반 큐 |
ArrayDeque | 빠른 양방향 큐 (Deque) |
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
System.out.println(queue.poll()); // 1
✅ 4) Map (Key-Value, 중복 Key 불가)
클래스 | 특징 |
HashMap | 순서 X, 빠른 검색 (O(1)) |
LinkedHashMap | 입력 순서 유지 |
TreeMap | Key 기준 정렬 (O(logN)) |
Hashtable | 동기화 지원 (멀티스레드 환경) |
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
System.out.println(map.get("A")); // 1
⚡ 4. 컬렉션 선택 기준
요구사항 | 추천 컬렉션 |
빠른 검색 | ArrayList, HashMap |
빠른 삽입/삭제 | LinkedList, LinkedHashSet |
중복 방지 | Set, Map |
정렬된 데이터 유지 | TreeSet, TreeMap |
동기화 필요 | Vector, Hashtable, ConcurrentHashMap |
🚀 Java Collections Framework를 활용하면 효율적인 데이터 관리가 가능!
출처 : ChatGPT
'BE > Java' 카테고리의 다른 글
[Java] 네이버 포매터(Naver Formatter) (0) | 2025.03.11 |
---|---|
[Java] 롬복과 어노테이션 프로세서 (1) | 2025.03.08 |
[Java] Mockito (1) | 2025.01.21 |
[Java] Servlet (2) | 2025.01.10 |
[Java] HttpServletRequest (0) | 2025.01.08 |