Java를 배우다 보면 데이터를 효율적으로 저장하고 관리하는 방법을 고민하게 된다.
배열을 쓰기엔 불편하고, 다양한 데이터를 다루려면 더 나은 방법이 필요하다.
이럴 때 사용하는 것이 바로 **컬렉션 프레임워크(Collection Framework)**다.
컬렉션 프레임워크는 크게 List, Set, Map 인터페이스로 나뉘며, 대표적인 구현 클래스는 다음과 같다.
List | ArrayList, LinkedList | 순서 O, 중복 허용 |
Set | HashSet, TreeSet | 순서 X, 중복 불가 |
Map | HashMap, TreeMap | 키-값(Key-Value) 저장 키 값 중복X |
가장 많이 사용하는 ArrayList, HashSet, HashMap을 코드와 함께 비교해보자.
1. ArrayList – 순서가 있는 리스트 (중복 허용)
ArrayList는 배열과 비슷하지만 크기를 동적으로 조절할 수 있는 리스트다.
배열과 다르게 요소를 추가하거나 삭제해도 크기가 자동으로 조정된다.
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Java"); // 중복 가능
System.out.println(list); // [Java, Python, Java]
}
}
언제 사용할까?
- 순서가 중요한 데이터를 다룰 때
- 중복을 허용해야 하는 경우
예를 들면, 사용자의 즐겨찾기 목록, 장바구니 같은 데이터를 저장할 때 적합하다.
2. HashSet – 중복 없는 집합 (순서 없음)
HashSet은 중복을 허용하지 않는 자료구조다.
중복된 데이터를 저장하면 자동으로 제거된다.
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("Java"); // 중복 허용 안됨
System.out.println(set); // [Java, Python]
}
}
언제 사용할까?
- 중복을 제거해야 하는 경우
- 순서가 필요 없는 데이터
예를 들면, 사용자가 방문한 웹사이트 목록, 회원 이메일 중복 검사 등에 사용할 수 있다.
3. HashMap – 키-값 저장 (빠른 검색 가능)
HashMap은 데이터를 키(Key)-값(Value) 형태로 저장한다.
배열이나 리스트와 다르게, 특정 값을 찾을 때 키를 이용해 빠르게 검색할 수 있다.
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "Java");
map.put(2, "Python");
map.put(3, "C++");
System.out.println(map.get(1)); // Java
}
}
언제 사용할까?
- 검색 속도가 중요한 경우
- 데이터를 Key로 관리해야 할 때
예를 들면, 사용자 ID - 회원 정보 저장, 우편번호 - 지역 매칭 같은 기능에서 많이 활용된다.
4. 컬렉션 선택 가이드
컬렉션특징언제 사용하면 좋을까?
ArrayList | 순서 유지, 중복 허용 | 순서가 중요한 데이터 |
HashSet | 순서 없음, 중복 제거 | 중복된 데이터 없애야 할 때 |
HashMap | 키-값 저장, 빠른 검색 | 데이터를 키로 저장해야 할 때 |
5. Java 면접 질문 & 실전 팁
개발 면접에서 자주 나오는 컬렉션 관련 질문은 다음과 같다.
- ArrayList와 LinkedList 차이점
- HashSet 내부 구조와 동작 방식
- HashMap에서 Key는 중복될 수 있는가?
이 개념들을 확실히 이해하고 있다면, 면접에서도 당황하지 않을 것이다.
마무리
자바 컬렉션 프레임워크는 효율적인 데이터 관리를 위한 필수 개념이다.
특히 ArrayList, HashSet, HashMap은 개발하면서 가장 자주 사용되므로 반드시 익혀두는 것이 좋다.
다음 글에서는 컬렉션의 성능 최적화 방법에 대해 다뤄보겠다.
도움이 되셨다면 공유와 북마크를 부탁드려요.
'JAVA' 카테고리의 다른 글
Java Stream anyMatch(), allMatch(), noneMatch() 완벽 정리 (0) | 2025.03.17 |
---|---|
[JDK환경변수] JAVA 설정 - 윈도우 환경변수 한줄로 나올 때 (0) | 2025.02.26 |
[JAVA Stream API] 컬렉션 프레임워크에 적용 (0) | 2024.11.14 |
[JAVA] Stream 정리 [Stream, Map, Filtering, Sorted, Collect] (1) | 2024.09.05 |
[Java] Random보단 SecureRandom 를 사용하자. (0) | 2023.04.04 |