자바 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 컬렉션 프레임워크의 성능 비교와 실전 활용을 배웠어요!
👉 "이제 예외 처리 및 사용자 정의 예외에 대해 배우고 싶다면?"
✅ 다음 회차에서 예외 처리 및 사용자 정의 예외를 다뤄봅시다!
'IT Developer > Java' 카테고리의 다른 글
Java 기초 <11. Java 네트워크 프로그래밍 – Socket, HTTPClient, WebSocket> (0) | 2025.03.12 |
---|---|
Java 기초 <10. Java 입출력 스트림 (I/O) 기본과 활용> (1) | 2025.03.11 |
Java 기초 <9. 멀티스레딩과 동시성 프로그래밍> (1) | 2025.03.10 |
Java 기초 <8. 예외 처리와 사용자 정의 예외> (0) | 2025.03.09 |
Java 기초 <6. 인터페이스와 추상 클래스의 차이> (0) | 2025.03.07 |
Java 기초 <5. 객체지향 4대 원칙 (캡슐화, 상속, 다형성, 추상화)> (0) | 2025.03.06 |
Java 기초 <4. 메서드, 생성자, 접근제어자 정리> (1) | 2025.03.05 |
Java 기초 <3. Java 기본 문법과 자료형> (1) | 2025.03.04 |