안녕하세요 오늘은 자바의 자료구조 프레임워크인 컬렉션(Collection)의 개념과
List, Set, Map 세 가지 인터페이스의 차이를 알아보겠습니다.
1. 컬렉션(Collection) 이란?
컬렉션(Collection)은 데이터를 효율적으로 저장하고 관리하는 자료구조를 제공하는 자바의 프레임워크입니다. 쉽게 말해, 여러 개의 데이터를 한 번에 다룰 수 있도록 도와주는 도구입니다.
컬렉션을 사용하면 데이터를 효율적으로 추가, 삭제, 검색할 수 있고 자료구조를 직접 구현하지 않고 편리하게 사용 가능합니다. 또한 코드 재사용성이 증가하고 유지보수가 쉬워진다는 장점이 있습니다.
2. 컬렉션 프레임워크의 주요 인터페이스
1) List - 순서 유지, 중복 허용 (ArrayList, LinkedList)
2) Set - 순서 없음, 중복 불가 (HashSet, TreeSet)
3) Map - 키(key) - 값(value) 구조, 키 중복 불가 (HashMap, TreeMap)
1) List
데이터의 순서가 유지되며 중복된 값도 저장할 수 있는 자료구조입니다.
저장된 데이터의 순서가 보장되며 같은 값을 여러 번 저장할 수 있습니다. 데이터에 부여된 index 값을 통해 요소에 접근할 수 있습니다
ArrayList 사용예제
import java.util.ArrayList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("사과");
list.add("바나나");
list.add("사과"); // 중복 허용
System.out.println("List: " + list); // [사과, 바나나, 사과]
}
}
출력결과
List: [사과, 바나나, 사과]
2) Set
중복된 데이터를 허용하지 않는 컬렉션입니다. 데이터의 순서는 보장되지만, 동일한 값을 한번만 저장할 수 있습니다
HashSet 사용예제
import java.util.HashSet;
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("사과");
set.add("바나나");
set.add("사과"); // 중복 데이터, 저장 안 됨
System.out.println("Set: " + set);
}
}
출력결과
Set: [바나나, 사과] // 중복된 "사과"가 하나만 저장됨
3) Map
키-값 쌍으로 데이터를 저장하는 컬렉션입니다.
키(key)값은 중복될 수 없으나 같은 값(value)은 중복 가능합니다. 키값을 통해 값을 빠르게 찾을 수 있습니다.
HashMap 사용예제
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(1, "사과");
map.put(2, "바나나");
map.put(1, "포도"); // 같은 키(1) 값 덮어쓰기
System.out.println("Map: " + map);
System.out.println("Key 1의 값: " + map.get(1));
}
}
출력예제
Map: {1=포도, 2=바나나}
Key 1의 값: 포도
이렇게 자바의 컬렉션 프레임워크를 사용하면 데이터를 더욱 효율적으로 저장하고 관리할 수 있습니다.
List, Set, Map 의 차이를 이해하고 상황에 맞는 컬렉션을 선택하는 것이 중요합니다.
감사합니다
'Java' 카테고리의 다른 글
[Java] Swing을 사용하여 간단한 계산기 만들기 (0) | 2025.03.24 |
---|---|
[JAVA] ExecutorService로 Thread Pool 구현하기 (0) | 2025.03.20 |
[Java] synchronized를 활용한 멀티스레드 동기화 처리 (0) | 2025.03.13 |
[JAVA] 도서 대여 시스템으로 객체 지향 프로그래밍 (OOP) 개념 익히기 (0) | 2025.03.12 |
[JAVA] Thread와 Runnable (0) | 2025.03.09 |