⚛️ 리액트 개발 환경 세팅: CRA vs Vite

⚛️ 리액트 개발 환경 세팅: CRA vs Vite

데이터 구조의 핵심! 💾 자바 컬렉션 프레임워크: List, Set, Map 완벽 비교 분석

프로그램은 결국 데이터를 다루는 것입니다. 쇼핑몰의 상품 목록이든, 연락처 목록이든, 모든 정보는 체계적으로 저장되고 관리되어야 합니다.
자바(Java)에서는 이러한 데이터를 효율적으로 '수집(Collection)'하고 '관리'할 수 있도록 돕는 컬렉션 프레임워크(Collection Framework)를 제공합니다.
이 프레임워크의 세 가지 핵심 기둥인 List, Set, Map은 개발자가 데이터를 다룰 때 어떤 상황에서 어떤 구조를 사용해야 할지 결정하는 기준이 됩니다.
본 글에서는 이 세 가지의 개념과 명확한 차이점을 일반인도 쉽게 이해할 수 있도록 명쾌하게 설명합니다.

🌱 컬렉션 프레임워크란 무엇인가?

컬렉션(Collection)은 말 그대로 '데이터를 모아둔 것'입니다.
자바 컬렉션 프레임워크는 데이터를 저장하고 처리하는 데 필요한 인터페이스(규칙)와 구현 클래스(실제 구조)의 집합입니다.
기존 배열(Array)의 한계(크기가 고정됨)를 극복하고, 데이터를 유연하게 추가, 삭제, 검색할 수 있도록 설계되었습니다.

💡 핵심 계층 구조

컬렉션 프레임워크는 크게 Collection 인터페이스Map 인터페이스를 최상위로 가집니다.
우리가 주로 사용하는 ListSetCollection 인터페이스를 상속받으며, Map은 독립적인 구조를 가집니다.

Hierarchy diagram of the Java Collections Framework





🔑 List, Set, Map: 3대 핵심 인터페이스 비교

세 가지 인터페이스는 데이터를 저장하는 방식과 규칙에 따라 명확히 구분됩니다.
어떤 데이터를, 어떻게 저장하고 싶으냐에 따라 적절한 컬렉션을 선택해야 합니다.

1. 📖 List (목록): 순서가 있는 데이터 모음

List는 순서가 있는(Ordered) 데이터의 목록을 저장합니다. 우리가 흔히 생각하는 배열이나 메모와 가장 비슷합니다.
가장 큰 특징은 데이터의 중복 저장이 허용된다는 점입니다.

⭐ 구현 클래스 예시:
  • ArrayList: 가장 흔하게 사용되며, 배열처럼 인덱스(순서 번호)를 통해 빠르게 접근 가능합니다.
  • LinkedList: 데이터의 추가/삭제가 빈번할 때 효율적입니다.

2. 🧩 Set (집합): 중복을 허용하지 않는 데이터 모음

Set은 수학적인 집합 개념과 동일합니다. 데이터를 저장할 때 중복을 절대 허용하지 않습니다.
순서는 중요하지 않으며, 특정 요소가 해당 집합에 '존재하는지' 여부를 빠르게 확인하는 용도로 주로 사용됩니다.

⭐ 구현 클래스 예시:
  • HashSet: 가장 빠른 성능을 제공하지만, 저장되는 순서가 보장되지 않습니다.
  • TreeSet: 저장된 데이터를 자동으로 오름차순 정렬하여 저장합니다.

3. 🔑 Map (지도): 키(Key)와 값(Value)의 쌍

Map은 Collection 인터페이스를 상속받지 않는 독립적인 구조입니다. 데이터를 키(Key)와 값(Value)이 한 쌍으로 묶여 저장하는 방식입니다.
가장 중요한 특징은 키는 중복될 수 없지만, 값은 중복될 수 있다는 점입니다. 키를 통해 값을 빠르고 정확하게 찾아낼 수 있습니다.

⭐ 구현 클래스 예시:
  • HashMap: 가장 일반적이고 빠른 Map 구현체로, 키-값 쌍을 저장합니다.
  • LinkedHashMap: 키를 삽입한 순서대로 기억합니다.

Visual comparison of storage structures of List, Set, and Map



List, Set, Map 주요 특징 비교
구분 순서 유지 여부 중복 허용 여부 저장 방식
List O (인덱스 순서) O (허용) 값만 저장
Set X (대부분의 구현체) X (불가) 값만 저장
Map X (키-값 쌍) 키는 불가, 값은 허용 키(Key)와 값(Value) 쌍 저장

📝 마무리: 컬렉션, 데이터 활용의 첫 단추

자바 컬렉션 프레임워크의 List, Set, Map은 데이터를 다루는 가장 기본적인 틀입니다. 어떤 구조를 선택하느냐에 따라 프로그램의 성능과 안정성이 크게 달라집니다.

데이터의 순서중복 허용 여부를 기준으로 List, Set, Map 중 하나를 선택하고, 이제는 Stream API를 통해 데이터를 간결하게 처리하는 연습을 시작해보세요!

댓글 쓰기