[자료구조] List Map Set의 차이와 활용(Java)

2025. 1. 3. 14:59CS

1. List Map Set이란?

Java 컬렉션 프레임워크에서 제공하는 List, Map, Set은 데이터를 저장, 관리, 처리하기 위한 기본 인터페이스이다.

각 인터페이스는 서로 다른 특징과 용도로 설계되어 있으며, 상황에 따라 적합한 것을 선택해 사용할 수 있다.


2. List Map Set의 차이

구분 List Set Map
정의 순서가 있는 데이터의 집합 중복을 허용하지 않는 데이터의 집합 키-값(Key-Value) 쌍으로 데이터를 저장
중복 허용 O X 키는 중복 X, 값은 중복 O
순서 유지 O (인덱스로 접근 가능) X (일부 구현체는 유지) X (키를 기준으로 접근 가능)
대표 구현체 ArrayList, LinkedList HashSet, TreeSet HashMap, TreeMap

 


3. List Map Set의 주요 구현제

3-1. List

  • 정의: 순서가 중요한 데이터의 집합으로, 중복된 데이터를 저장할 수 있다.
  • 주요 구현체:
    - ArrayList: 배열 기반, 데이터 접근 속도가 빠르며 데이터 삽입/삭제가 느림
    - LinkedList: 연결 리스트 기반, 삽입/삭제가 빠르며 데이터 접근 속도가 느림
  • 활용 예시:
    - 순차적인 데이터 처리
    - 대기열 관리
    - 인덱스를 통한 빠른 접근이 필요한 경우
  • 코드 예제:
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("Apple"); // 중복 허용
        System.out.println(list); // 출력: [Apple, Banana, Apple]
    }
}

 

 

 

3-2. Set

  • 정의: 중복을 허용하지 않는 데이터의 집합으로, 순서는 보장되지 않는다.
  • 주요 구현체:
    - HashSet: 빠른 삽입/삭제/검색을 지원하며, 순서를 보장하지 않음
    - TreeSet: 데이터가 자동으로 정렬되며, 삽입/삭제/검색이 느림
  • 활용 예시:
    - 중복 데이터를 제거
    - 데이터의 유일성이 중요한 경우
  • 코드 예제:
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("Apple"); // 중복 삽입
        System.out.println(set); // 출력: [Apple, Banana]
    }
}

 

 

 

3-3. Map

  • 정의: 키-값(Key-Value) 쌍으로 데이터를 저장하며, 키를 기준으로 데이터를 검색하거나 수정할 수 있다.
  • 주요 구현체:
    - HashMap: 빠른 검색/삽입/삭제를 지원하며, 순서를 보장하지 않음
    - TreeMap: 키를 기준으로 데이터를 정렬하며, 성능은 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(1, "Grape"); // 키 중복 시 값 대체
        System.out.println(map); // 출력: {1=Grape, 2=Banana}
    }
}

 


4. List Map Set의 활용 시 선택 기준

  • List:
    - 데이터의 순서가 중요하거나 중복 허용이 필요한 경우
    - 예) 대기열, 순차 데이터
  • Set
    - 중복을 제거하거나 유일한 데이터 관리가 필요한 경우
    - 예) 유저 ID, 태그 관리
  • Map
    - 키를 통해 데이터를 빠르게 검색하거나 키-값 관계를 관리할 때
    - 예) 사전, 데이터베이스 키-값 저장소

5. 시간 복잡도 비교

연산 ArrayList LinkedList HashSet TreeSet HashMap TreeMap
삽입 O(1) O(1) O(1) O(log n) O(1) O(log n)
삭제 O(n) O(1) O(1) O(log n) O(1) O(log n)
검색 O(1) O(n) O(1) O(log n) O(1) O(log n)