Map, List, Set 비교하기

개발 오답 노트·2025년 7월 14일

개념정리

목록 보기
13/13

✅ 1. Map, List, Set 비교

🔹 공통점

  • 모두 컬렉션 프레임워크의 일부이며, 데이터를 담는 컨테이너입니다.
  • 하지만 용도와 특징이 다릅니다.

📊 주요 차이점 요약

항목ListSetMap
기본 구조순서 있는 데이터 집합순서 없는 유일한 데이터 집합키(key)-값(value) 쌍
중복 허용O (중복 가능)X (중복 불가)키: X, 값: O
순서 유지O (인덱스로 접근 가능)구현체에 따라 다름 (HashSet: 무순서, LinkedHashSet: 순서 유지)구현체에 따라 다름
대표 클래스ArrayList, LinkedListHashSet, TreeSetHashMap, TreeMap
접근 방식인덱스로 접근값 자체로 확인키로 접근

🔸 사용 예

✅ List


List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("apple"); // 중복 허용
System.out.println(list); // [apple, banana, apple]

✅ Set


Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple"); // 중복 무시됨
System.out.println(set); // [apple, banana] (순서는 보장 X)

✅ Map


Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("apple", 3); // 기존 키 덮어씀
System.out.println(map); // {banana=2, apple=3}

✅ 2. 제네릭 클래스 만들기

직접 타입을 파라미터로 받는 클래스를 만들 수 있어요. T, E, K, V 등을 자주 사용합니다.


🔹 기본 구조


public class Box<T> {
    private T value;

    public void set(T value) {
        this.value = value;
    }

    public T get() {
        return value;
    }
}

🔹 사용 예


public class Main {
    public static void main(String[] args) {
        Box<String> stringBox = new Box<>();
        stringBox.set("Hello");
        System.out.println(stringBox.get());  // Hello

        Box<Integer> intBox = new Box<>();
        intBox.set(100);
        System.out.println(intBox.get());  // 100
    }
}

🔹 여러 개 타입 지정도 가능


public class Pair<K, V> {
    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() { return key; }
    public V getValue() { return value; }
}

사용 예


Pair<String, Integer> pair = new Pair<>("apple", 3);
System.out.println(pair.getKey());   // apple
System.out.println(pair.getValue()); // 3

✅ 요약 정리

항목설명
List순서 있음, 중복 허용, 인덱스로 접근
Set순서 없음, 중복 불가
Map키-값 쌍 저장, 키는 유일
제네릭 클래스타입을 외부에서 지정 가능, 형변환 없이 사용 가능, 타입 안정성 제공
profile
포토폴리오 https://wikidocs.net/book/10969 유튜브 링크 https://www.youtube.com/@%EC%B5%9C%EC%9B%90%EC%9D%BC-n5r

0개의 댓글