본문 바로가기
won2dev-log
HomeArchiveTagsCategoriesAboutProjects
HomeArchiveTagsCategoriesAboutProjects
won2dev-logwon2dev-logwon2dev-log

비전공 개발자의 로그 | won2dev-log

Navigation
  • Home
  • Archive
  • About
  • Projects
Categories
  • Docs
  • TIL
  • Automation
  • Git · GitHub
  • Project
Tags
  • TIL
  • Java
  • Spring
  • Backend
  • n8n
더보기
About

기록을 거름 삼아 공유는 성장을 만든다.

LicensePrivacy
© won2dev 2026. All rights reserved.
Home›Docs›TIL - Java 기초: 컬렉션(Collection) 프레임워크 이해하기
Docs

TIL - Java 기초: 컬렉션(Collection) 프레임워크 이해하기

won2dev·2025년 03월 18일
#Java#TIL
TIL - Java 기초: 컬렉션(Collection) 프레임워크 이해하기

💬 배운 기술 / 지식

  • 컬렉션 프레임워크란?
  • 주요 인터페이스: List, Set, Map
  • 대표 구현 클래스와 특징
  • 컬렉션 사용법과 주요 메서드
  • Iterator와 향상된 for문
  • 제네릭(Generic)과 타입 안전성
  • 컬렉션과 배열 비교
  • 동기화와 병렬 처리 고려 사항

📚 컬렉션 프레임워크란?

  • 자바에서 데이터를 효율적으로 저장, 검색, 수정, 삭제할 수 있도록 표준화된 자료구조 클래스들의 집합
  • 배열의 단점을 보완하고, 다양한 자료구조를 일관된 API로 제공
  • java.util 패키지에 포함되어 있음
  • 컬렉션은 크게 List, Set, Map 세 가지 주요 인터페이스로 분류

🔗 주요 인터페이스와 특징

인터페이스설명특징대표 구현체
List순서가 있고 중복 허용인덱스로 접근 가능, 순서 보장ArrayList, LinkedList
Set순서 없고 중복 불허고유한 원소 저장, 순서 보장 안 됨HashSet, TreeSet
Map키와 값 쌍으로 저장키는 중복 불가, 값은 중복 가능HashMap, TreeMap, LinkedHashMap

🧩 List 상세

  • 순서 보장, 중복 허용
  • 대표 구현체
    • ArrayList: 배열 기반, 빠른 조회, 느린 삽입/삭제
    • LinkedList: 노드 기반, 빠른 삽입/삭제, 느린 조회
  • 주요 메서드
    java
    add(E e);        // 추가
    get(int index);  // 조회
    remove(int index); // 삭제
    size();          // 크기 반환
    contains(Object o); // 포함 여부
    add(E e);        // 추가
    get(int index);  // 조회
    remove(int index); // 삭제
    size();          // 크기 반환
    contains(Object o); // 포함 여부

🔒 Set 상세

  • 중복 허용 안 함, 순서 미보장 (단, LinkedHashSet은 삽입 순서 유지)
  • 대표 구현체
    • HashSet: 해시 기반, 빠른 탐색
    • TreeSet: 정렬된 상태 유지 (Comparable 또는 Comparator 필요)
  • 주요 메서드
    java
    add(E e);    // 추가 (중복 시 false 반환)
    remove(Object o); // 삭제
    contains(Object o); // 포함 여부
    add(E e);    // 추가 (중복 시 false 반환)
    remove(Object o); // 삭제
    contains(Object o); // 포함 여부

🗝 Map 상세

  • 키-값 쌍 저장, 키는 중복 불가
  • 대표 구현체
    • HashMap: 해시 기반, 빠른 조회
    • TreeMap: 키 정렬 유지
    • LinkedHashMap: 삽입 순서 유지
  • 주요 메서드
    java
    put(K key, V value);  // 저장/수정
    get(Object key);      // 조회
    remove(Object key);   // 삭제
    containsKey(Object key); // 키 포함 여부
    keySet();             // 키 집합 반환
    values();             // 값 집합 반환
    entrySet();           // 키-값 쌍 반환
    put(K key, V value);  // 저장/수정
    get(Object key);      // 조회
    remove(Object key);   // 삭제
    containsKey(Object key); // 키 포함 여부
    keySet();             // 키 집합 반환
    values();             // 값 집합 반환
    entrySet();           // 키-값 쌍 반환

🔄 컬렉션 사용법과 반복자(Iterator)

  • Iterator: 컬렉션 내부 원소 순회할 때 사용
    java
    Iterator<E> it = collection.iterator();
    while (it.hasNext()) {
        E element = it.next();
        // 처리
    }
    Iterator<E> it = collection.iterator();
    while (it.hasNext()) {
        E element = it.next();
        // 처리
    }
  • 향상된 for문 (for-each): 간결하게 반복 가능
    java
    for (E element : collection) {
        // 처리
    }
    for (E element : collection) {
        // 처리
    }

🎯 제네릭(Generic)과 타입 안전성

  • 컬렉션은 제네릭을 지원해, 저장할 객체 타입을 컴파일 시 지정 가능
  • 타입 캐스팅 불필요, 런타임 오류 감소
  • 예시
    java
    List<String> list = new ArrayList<>();
    list.add("Hello");
    String s = list.get(0);  // 캐스팅 불필요
    List<String> list = new ArrayList<>();
    list.add("Hello");
    String s = list.get(0);  // 캐스팅 불필요

🔀 배열 vs 컬렉션 비교

구분배열(Array)컬렉션(Collection)
크기고정가변 (동적 크기 조절 가능)
타입기본형 및 객체 모두 가능객체만 저장 가능
기능단순 저장 및 접근정렬, 검색, 삽입, 삭제 등 다양한 기능 제공
편의성단순다양한 인터페이스와 메서드 제공

🛡 동기화와 병렬 처리

  • 기본 컬렉션은 동기화 되지 않아 멀티스레드 환경에서 위험
  • 필요시 Collections.synchronizedList(), CopyOnWriteArrayList 등 활용
  • Java 8부터는 병렬 스트림(parallelStream())으로 대량 데이터 병렬 처리 가능

💡 느낀 점 / 참고 사항

  • 컬렉션 프레임워크는 자바 개발의 기본 도구
  • 상황에 맞는 자료구조를 선택하는 것이 중요
  • API가 방대하지만, 주요 인터페이스와 대표 구현체만 잘 익혀도 실무 활용 가능
  • 제네릭과 함께 사용하면 타입 안전성과 코드 간결성을 동시에 잡을 수 있음
  • 멀티스레드 환경에선 동기화, 불변 컬렉션 고려 필수
공유하기
이전 글TIL - Java 기초: 제네릭(Generic) 이해와 활용다음 글 TIL - Java 기초: Optional과 Null 안전하게 다루기

목차

  • 💬 배운 기술 / 지식
  • 📚 컬렉션 프레임워크란?
  • 🔗 주요 인터페이스와 특징
  • 🧩 List 상세
  • 🔒 Set 상세
  • 🗝 Map 상세
  • 🔄 컬렉션 사용법과 반복자(Iterator)
  • 🎯 제네릭(Generic)과 타입 안전성
  • 🔀 배열 vs 컬렉션 비교
  • 🛡 동기화와 병렬 처리
  • 💡 느낀 점 / 참고 사항

카테고리

Docs

태그

#Java#TIL

최근 글

Git 요약 (1) - Rebase, Stash, Squash MergeTIL - MSA 핵심 요소 정리TIL - (4) Spring 어노테이션 정리: Mockito를 활용한 단위 테스트TIL - (3) Spring 어노테이션 정리: Lombok Getter, Setter와 생성자TIL - (2) Spring MVC와 WebFlux의 차이: 블로킹과 논블로킹