IT Developer/Java

Java 기초 <7. 컬렉션 프레임워크 (List, Set, Map) 활용 및 성능 비교>

TEMA_ 2025. 3. 8. 09:02
반응형

자바 Java

7. 컬렉션 프레임워크 (List, Set, Map) 활용 및 성능 비교

 

안녕하세요! 태마입니다.

Java 기초 강좌입니다.

 

강좌의 경우 

1. 주제 간단 정리

2. 상세 주제 정리

으로 이루어져 있습니다.

 

자바 Java

포스팅 시작하겠습니다 :)

 

1. 주제 간단 정리

 

1. 컬렉션 프레임워크란?

컬렉션 프레임워크(Collection Framework)는 Java에서 데이터를 효율적으로 저장하고 관리할 수 있도록 제공하는 표준 라이브러리입니다.

📌 컬렉션 프레임워크를 사용하는 이유
✔ 동적 크기 조절 가능 → 배열처럼 고정된 크기가 아님
✔ 다양한 데이터 구조 제공 → 리스트, 집합, 맵 등 용도에 맞게 사용 가능
✔ 데이터 검색, 정렬, 추가/삭제 등의 기능을 편리하게 수행


 

2. 컬렉션 프레임워크의 주요 인터페이스

Java의 컬렉션 프레임워크는 3가지 주요 인터페이스(List, Set, Map) 를 제공합니다.

컬렉션 인터페이스특징대표 구현 클래스

List 순서 유지, 중복 허용 ArrayList, LinkedList
Set 순서 없음, 중복 불가 HashSet, TreeSet
Map Key-Value 구조, Key 중복 불가 HashMap, TreeMap

📌 각 인터페이스마다 사용 용도가 다르므로, 차이를 이해하고 적절하게 선택해야 함!


 

3. List – 순서가 있는 데이터 구조 (중복 허용)

List는 배열과 유사하지만 크기가 동적으로 변하는 자료구조입니다.
✔ 같은 데이터를 여러 번 저장할 수 있으며, 인덱스(index)로 요소에 접근 가능합니다.

ArrayList – 가장 많이 쓰이는 List

import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        
        list.add("Java");
        list.add("Python");
        list.add("JavaScript");

        System.out.println(list.get(0)); // Java 출력
        System.out.println(list.size()); // 3 출력
    }
}

📌 ArrayList는 배열처럼 빠른 접근 속도를 제공하지만, 삽입/삭제가 느릴 수 있음!


 

4. Set – 중복을 허용하지 않는 데이터 구조

✔ Set은 동일한 값을 중복해서 저장할 수 없는 자료구조입니다.
✔ HashSet과 TreeSet이 대표적인 구현체입니다.

HashSet – 중복 제거 및 빠른 검색

import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        HashSet<Integer> set = new HashSet<>();

        set.add(10);
        set.add(20);
        set.add(10); // 중복된 값은 저장되지 않음

        System.out.println(set.size()); // 2 출력
    }
}

📌 HashSet은 저장 순서를 보장하지 않으며, 중복을 자동으로 제거


 

5. Map – 키(Key)와 값(Value) 쌍으로 저장하는 구조

✔ Map은 키를 이용해 값을 저장하는 자료구조입니다.
✔ HashMap, TreeMap이 대표적인 구현체입니다.

HashMap – Key-Value 저장소

import java.util.HashMap;

public class MapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();

        map.put("Apple", 1000);
        map.put("Banana", 500);
        map.put("Apple", 1200); // 키가 중복되면 기존 값이 덮어쓰기됨

        System.out.println(map.get("Apple")); // 1200 출력
    }
}

📌 HashMap은 검색 속도가 빠르고, 키 중복을 허용하지 않음

반응형

2. 상세 주제 정리

 

 

1. ArrayList vs LinkedList – 어떤 걸 선택해야 할까?

ArrayList와 LinkedList는 모두 List 인터페이스를 구현하지만, 동작 방식이 다릅니다.

구분ArrayListLinkedList

데이터 접근 속도 빠름 (O(1)) 느림 (O(n))
데이터 삽입/삭제 속도 느림 (O(n)) 빠름 (O(1))
메모리 사용량 낮음 높음

📌 배열처럼 사용하고 싶다면 ArrayList, 삽입/삭제가 잦다면 LinkedList를 사용


2. HashMap vs TreeMap – 어떤 걸 써야 할까?

✔ HashMap → 빠른 검색(O(1))이 필요할 때 사용
✔ TreeMap → 자동 정렬이 필요한 경우 사용

import java.util.*;

public class MapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> hashMap = new HashMap<>();
        TreeMap<String, Integer> treeMap = new TreeMap<>();

        hashMap.put("Banana", 500);
        hashMap.put("Apple", 1000);
        hashMap.put("Cherry", 2000);

        treeMap.putAll(hashMap);

        System.out.println("HashMap: " + hashMap);
        System.out.println("TreeMap: " + treeMap);
    }
}

📌 TreeMap은 Key 값이 자동 정렬되므로 정렬이 필요한 경우 유용!


3. Set과 List의 차이점과 성능 비교

Set과 List는 둘 다 중복을 처리하는 방식이 다릅니다.

  • Set은 중복을 허용하지 않으며, 순서를 보장하지 않습니다.
  • List는 중복을 허용하며, 순서가 유지됩니다.

구분SetList

중복 허용 여부 중복 불가 중복 허용
순서 순서 없음 순서 유지
검색 속도 빠름 (HashSet 기준) 느림 (ArrayList 기준)

📌 리스트는 순서가 중요한 데이터에 적합하고, Set은 고유한 데이터만을 다룰 때 적합!


지금까지 Java 컬렉션 프레임워크의 성능 비교와 실전 활용을 배웠어요!
👉 "이제 예외 처리 및 사용자 정의 예외에 대해 배우고 싶다면?"
다음 회차에서 예외 처리 및 사용자 정의 예외를 다뤄봅시다!

반응형