Java 의 컬렉션은 List, Set, Map 이다.
순서가 중요하면 List 를 쓴다.

1. List
List list = new ArrayList<>();
list.add("A");
list.add("B");
System.out.println(list); // [A, B]
순서를 완벽하게 유지하는 자료구조다.
중복된 값을 저장할 수 있다.
인덱스를 통해 원소를 빠르게 접근한다.
순서가 중요한 경우나 중복이 필요한 경우에 쓴다.
ArrayList 는 추가 시 배열을 복사하므로 대용량 데이터에 주의해야 한다.
LinkedList 는 삽입과 삭제가 빠르지만 메모리 오버헤드가 크다.
2. Set
Set set = new HashSet<>();
set.add("A");
set.add("B");
set.add("A");
System.out.println(set); // [A, B]
중복된 값은 저장되지 않는다.
HashSet 은 순서를 보장하지 않지만 검색이 빠르다.
순서는 중요하지 않은 고유한 값만 필요할 때 쓴다.
HashSet 의 경우 키가 같으면 이전 값을 덮어쓰는 주의가 필요하다.
TreeSet 을 쓰면 자연 순서대로 정렬된 집합을 만들 수 있다.
3. Map
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
System.out.println(map); // {apple=1, banana=2}
키와 값의 쌍을 저장하는 자료구조다.
키는 중복될 수 없다.
특정 키를 통해 값을 빠르게 조회한다.
키로 접근해야 하는 관계형 데이터에 적합하다.
HashMap 은 null 키나 값을 허용하지만 한 개만 가능하다.
ConcurrentHashMap 은 다중 스레드 환경에서 안전하게 사용할 수 있다.
'개념 창고 > JAVA' 카테고리의 다른 글
| [CS] 뮤텍스(Mutex)와 세마포어(Semaphore) 차이 (0) | 2026.10.24 |
|---|---|
| [Java] equals() 를 재정의하면 hashCode() 도 재정의해야 하는 이유 (0) | 2026.10.22 |
| [Java] 추상 클래스와 인터페이스 차이 (0) | 2026.10.16 |
| [Java] 문자열(String) 비교시 equals()와 == 차이 (0) | 2024.07.30 |
| [Java] Unsigned int 구현 방법 (0) | 2024.01.31 |