1. 왜 컬렉션이 필요했을까?
배열의 문제점
- 크기가 고정됨
- 중간 삽입/삭제가 너무 번거롭다
- 기능이 없어 정렬, 검색을 직접 구현해야 한다
int[] arr = new int[3];
// 크기를 늘리고 싶으면 -> 새로운 배열에 값을 복사해줘야 함...
-> 이러한 불편함을 해결하기 위해 등장한 것이 컬렉션 프레임워크이다!
2. Java Collection Framework(JCF)란?
데이터를 저장하고 관리하는 표준화된 자료구조 + 인터페이스 + 구현체 모음이다. 핵심 목표는 자료구조를 직접 만들지 말고, 상황에 맞는 컬렉션을 선택해서 쓰자!!

3. List<E> - 순서 O, 중복 O
특징
- 저장 순서 유지
- 중복 허용
- 인덱스로 접근 가능
- ArrayList, LinkedList
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("A"); // 중복 허용
System.out.println(list.get(0));
4. Set<E> - 순서 X, 중복 X
특징
- 중복 불가
- 저장 순서가 보장 안됨 -> 저장 순서에 따라 다르게 출력될 수도 있다
- 인덱스 없음
- HashSet, TreeSet
Set<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("A"); // 오류가 발생하지 않고 무시됨
System.out.println(set.size()); // 2
5. Map<K,V> - key, value 쌍
특징
- Key는 중복 불가
- Value는 중복 가능
- 순서 개념이 없다
- HashMap
- TreeMap
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1000);
map.put("banana", 1500);
map.put("apple", 1200); // 기존 값 덮어씀
참고로 Map은 Collection 인터페이스를 상속하지 않는다
6. 컬렉션 공통 메서드
| 메서드 | 설명 |
| add() | 요소 추가 |
| remove() | 요소 삭제 |
| contains() | 포함 여부 |
| size() | 크기 |
| isEmpty() | 비어있는지 |
7. Iterator - 컬렉션 순회 표준 방식
모든 컬렉션은 Iterator를 통해 순회할 수 있다.
Iterator<Strint> it = list.iterator();
while (is.hasNext()) {
String value = is.next();
sout(value);
}
8. 느낀점 + 정리
- 배열은 잘 사용하지 않구나
- 컬렉션이 실전용
- List/Set/Map으로 뭘 할 수 있을까??
'Java & Spring > 컬렉션 프레임워크' 카테고리의 다른 글
| 제네릭 (Generic) (0) | 2026.01.20 |
|---|---|
| 람다 표현식 (0) | 2026.01.19 |
| List, Set, Map (0) | 2026.01.08 |