Java & Spring/컬렉션 프레임워크

JCF가 왜 필요할까?

승주우에요 2026. 1. 8. 21:06

1. 왜 컬렉션이 필요했을까?

배열의 문제점

  • 크기가 고정됨
  • 중간 삽입/삭제가 너무 번거롭다
  • 기능이 없어 정렬, 검색을 직접 구현해야 한다
int[] arr = new int[3];
// 크기를 늘리고 싶으면 -> 새로운 배열에 값을 복사해줘야 함...

-> 이러한 불편함을 해결하기 위해 등장한 것이 컬렉션 프레임워크이다!

 

2. Java Collection Framework(JCF)란?

데이터를 저장하고 관리하는 표준화된 자료구조 + 인터페이스 + 구현체 모음이다. 핵심 목표는 자료구조를 직접 만들지 말고, 상황에 맞는 컬렉션을 선택해서 쓰자!!

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