[Java] 5. Collection 프레임워크 소개

김민주·2025년 3월 22일

Programming Language

목록 보기
9/12
post-thumbnail

1. 왜 컬렉션을 써야 할까?

배열(Array)로 데이터를 다루다 보면 이런 순간이 옵니다:

"데이터 개수가 매번 달라져..."
"중복 제거하고 싶은데 어떻게 하지?"
"키-값 형태로 저장하고 싶어!"

이럴 때 필요한 게 바로 Java의 Collection Framework

2. 한눈에 보는 컬렉션 구조


✨ 내가 그린 컬렉션 프렘웤~~~ 너를 위해 그렸지~But you know that it ain't for free~
예 컬렉션 전체 구조가 이렇게 생겼습니다!

✅ 핵심 구조 요약

Collection 인터페이스 → List, Set, Queue로 나뉨
Map은 따로 존재 (Collection과 별개!)

각각의 구현체는 특성이 다릅니다!

3. 핵심 인터페이스와 구현체 빠르게 훑기

📌 List

구현체특징
ArrayList가장 많이 씀, 조회 빠름
LinkedList삽입/삭제 빠름
Vector, Stack거의 안 씀 (Legacy)

📌 Set

구현체특징
HashSet중복 제거, 순서 X
LinkedHashSet입력 순서 유지
TreeSet자동 정렬 (오름차순)

📌 Queue / Deque

구현체특징
LinkedListQueue & Deque 둘 다 가능
PriorityQueue우선순위대로 꺼냄

📌 Map

구현체특징
HashMap가장 많이 씀, 순서 X
LinkedHashMap입력 순서 유지
TreeMap자동 정렬 (오름차순)

4. 언제 어디서 쓰는가?

상황추천 컬렉션이유
데이터 추가/삭제 많음LinkedList연결 구조라 삽입 삭제 빠름
중복 제거HashSet중복 불가 특성
키-값 저장HashMapMap의 대표주자
정렬된 데이터 필요TreeSet / TreeMap자동 정렬
최근 방문 페이지 저장Deque양방향 삽입/삭제 가능

🎯 Mini Quiz

상황 보고 컬렉션 골라보자!

Q1. 회사 사원 정보를 저장하고, 사원 번호로 빠르게 사원 이름을 찾아야 한다.
Q2. 게시글에 달린 태그들 중복 없이 저장하고 싶다. 예시: #자바, #코딩, #자바
Q3. 최근 본 상품을 순서대로 저장하고, 맨 마지막 상품부터 다시 확인하고 싶다 (뒤에서부터 꺼내기).
Q4. 숫자 데이터가 계속 들어오는데, 자동으로 오름차순 정렬되게 저장하고 싶다.
Q5. 학교에 학생 번호가 주어질 때, 번호가 작은 순서대로 학생 정보를 저장하고 출력하고 싶다.

A1. HashMap (빠른 검색 + Key로 검색)

HashMap<Integer, String> employeeMap = new HashMap<>();
employeeMap.put(1001, "홍길동");
employeeMap.put(1002, "김철수");
System.out.println(employeeMap.get(1001)); // 홍길동

A2. HashSet (중복 제거가 핵심)

HashSet<String> tags = new HashSet<>();
tags.add("자바");
tags.add("코딩");
tags.add("자바");  // 중복이라 무시됨
System.out.println(tags); // [자바, 코딩]

A3. Deque (LinkedList 또는 ArrayDeque) (순서대로 저장 + 뒤에서 꺼내기)

Deque<String> recentView = new LinkedList<>();
recentView.add("상품1");
recentView.add("상품2");
recentView.add("상품3");

// 마지막 본 상품부터 확인
System.out.println(recentView.pollLast());  // 상품3

A4. TreeSet (들어오는 순서 상관없이 자동 오름차순 정렬)

TreeSet<Integer> scores = new TreeSet<>();
scores.add(50);
scores.add(20);
scores.add(70);
System.out.println(scores); // [20, 50, 70]

A5. TreeMap (key(학생 번호) 기준 자동 정렬 + 정보 저장)

TreeMap<Integer, String> studentMap = new TreeMap<>();
studentMap.put(3, "김철수");
studentMap.put(1, "홍길동");
studentMap.put(2, "이영희");

System.out.println(studentMap); // {1=홍길동, 2=이영희, 3=김철수}
profile
낭비하지마 네 시간은 은행🐰

0개의 댓글