본문 바로가기
IT/JAVA

Java Collection Framework 개요 (List, Set, Map)

by ohukohoh 2025. 2. 28.
728x90
반응형

Java Collection Framework는 데이터를 효율적으로 저장하고 조작할 수 있는 자료구조 및 알고리즘의 집합입니다. 컬렉션 프레임워크는 List, Set, Map을 포함한 여러 인터페이스와 클래스를 제공하며, 이를 활용하면 다양한 데이터 구조를 쉽게 구현할 수 있습니다.


1. Java Collection Framework란?

Java Collection Framework(JCF)는 데이터를 저장하고 관리하기 위한 인터페이스 및 클래스의 모음입니다.

  • java.util 패키지에 포함되어 있습니다.
  • 동적 크기 조절, 정렬, 검색 등의 기능을 제공합니다.
  • 기본적으로 List, Set, Map의 세 가지 주요 인터페이스로 분류됩니다.

2. List 인터페이스 (순서가 있는 데이터 저장)

List의 개념

  • 순서가 있는 데이터 저장 (인덱스를 기반으로 데이터 관리)
  • 중복 허용
  • 대표적인 구현 클래스: ArrayList, LinkedList, Vector

List 사용 예제 (ArrayList)

import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");
        list.add("Apple"); // 중복 허용

        System.out.println("List 요소: " + list);
    }
}

출력 결과:

List 요소: [Apple, Banana, Cherry, Apple]

🔹 List는 순서를 유지하며, 중복 데이터를 허용합니다.

List 주요 구현 클래스 비교

클래스특징

ArrayList 배열 기반 리스트, 빠른 조회 성능 (O(1))
LinkedList 연결 리스트 기반, 삽입/삭제 성능 우수 (O(1))
Vector ArrayList와 유사하나 동기화 지원

3. Set 인터페이스 (중복 없는 데이터 저장)

Set의 개념

  • 중복을 허용하지 않는 자료구조
  • 순서 보장 X (데이터가 삽입된 순서와 다를 수 있음)
  • 대표적인 구현 클래스: HashSet, LinkedHashSet, TreeSet

Set 사용 예제 (HashSet)

import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Cherry");
        set.add("Apple"); // 중복된 요소 추가

        System.out.println("Set 요소: " + set);
    }
}

출력 결과:

Set 요소: [Banana, Cherry, Apple]

🔹 중복된 요소 "Apple"이 자동으로 제거됨 🔹 데이터의 저장 순서가 보장되지 않을 수 있음

Set 주요 구현 클래스 비교

클래스 특징
HashSet 순서 보장 X, 빠른 검색 (O(1))
LinkedHashSet 입력 순서 유지
TreeSet 정렬된 상태 유지

4. Map 인터페이스 (키-값 쌍 저장)

Map의 개념

  • 키(Key)와 값(Value)의 쌍으로 데이터 저장
  • 키는 중복 불가능, 값은 중복 가능
  • 대표적인 구현 클래스: HashMap, LinkedHashMap, TreeMap

Map 사용 예제 (HashMap)

import java.util.HashMap;

public class MapExample {
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1, "Apple");
        map.put(2, "Banana");
        map.put(3, "Cherry");
        map.put(1, "Grapes"); // 키 중복 (기존 값 덮어쓰기)

        System.out.println("Map 요소: " + map);
    }
}

출력 결과:

Map 요소: {1=Grapes, 2=Banana, 3=Cherry}

🔹 키 중복이 허용되지 않으며, 같은 키를 사용하면 기존 값이 덮어쓰기됨 🔹 값은 중복 가능

Map 주요 구현 클래스 비교

클래스 특징
HashMap 키 순서 보장 X, 빠른 검색 (O(1))
LinkedHashMap 입력 순서 유지
TreeMap 키 기준 정렬 유지

5. List, Set, Map 비교

비교 항목 List Set Map
중복 허용 O X 키: X, 값: O
순서 유지 O LinkedHashSet만 O LinkedHashMap만 O
데이터 구조 인덱스 기반 저장 중복 없는 집합 키-값 쌍 저장
대표 클래스 ArrayList, LinkedList HashSet, TreeSet HashMap, TreeMap

List 사용 추천 경우

  • 순서가 중요하고, 중복 데이터를 허용해야 할 때
  • 배열과 유사한 동작이 필요할 때

Set 사용 추천 경우

  • 중복을 방지해야 할 때
  • 특정 값이 존재하는지 빠르게 확인해야 할 때

Map 사용 추천 경우

  • 데이터를 키-값 쌍으로 저장해야 할 때
  • 빠르게 특정 키를 기반으로 값을 찾을 때

결론

  • List: 순서가 있는 데이터 저장 (중복 허용) → ArrayList, LinkedList
  • Set: 중복 없는 데이터 저장 (순서 X) → HashSet, TreeSet
  • Map: 키-값(Key-Value) 형태의 데이터 저장HashMap, TreeMap

적절한 컬렉션을 선택하여 효율적인 Java 프로그램을 개발해 보세요! 🚀

728x90
반응형