Files
java-examples/docs/Collections.md

5.0 KiB

자바 Collections 쉽게 배우기

자바에서 Collections Framework배열보다 더 강력한 자료구조를 제공한다.
배열은 크기가 고정되지만, 컬렉션은 동적으로 크기를 조정할 수 있으며, 다양한 데이터 구조를 제공한다.

컬렉션은 크게 다음과 같은 주요 인터페이스로 구성된다.

  • List : 순서가 있는 자료구조 (배열과 유사, 중복 허용)
  • Set : 중복을 허용하지 않는 자료구조
  • Queue : FIFO(선입선출) 방식의 자료구조
  • Map : 키-값 쌍을 저장하는 자료구조

1. 주요 컬렉션 클래스 및 메서드 정리

(1) List 인터페이스를 구현하는 클래스 (ArrayList, LinkedList)

클래스 특징
ArrayList<E> 크기가 동적으로 변하는 배열
LinkedList<E> 이중 연결 리스트 구조, 삽입·삭제 빠름
메서드 설명
add(E e) 요소 추가
get(int index) 특정 위치의 요소 반환
remove(int index) 특정 위치의 요소 삭제
size() 리스트 크기 반환
contains(Object o) 특정 요소 포함 여부 확인
indexOf(Object o) 특정 요소의 인덱스 반환

예제 코드:

List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");

System.out.println(list.get(0)); // Apple
System.out.println(list.contains("Banana")); // true

(2) Set 인터페이스를 구현하는 클래스 (HashSet, TreeSet)

클래스 특징
HashSet<E> 중복 없는 요소 저장, 순서 보장 안 됨
TreeSet<E> 정렬된 상태 유지
메서드 설명
add(E e) 요소 추가
remove(Object o) 요소 삭제
contains(Object o) 요소 포함 여부 확인
size() 크기 반환
clear() 모든 요소 제거

예제 코드:

Set<Integer> set = new HashSet<>();
set.add(10);
set.add(20);
set.add(10); // 중복된 값 추가 X

System.out.println(set.size()); // 2
System.out.println(set.contains(20)); // true

(3) Queue 인터페이스를 구현하는 클래스 (LinkedList, PriorityQueue)

클래스 특징
LinkedList<E> FIFO(선입선출) 방식으로 동작
PriorityQueue<E> 우선순위에 따라 정렬
메서드 설명
offer(E e) 요소 추가 (큐의 끝에)
poll() 첫 번째 요소 반환 후 제거
peek() 첫 번째 요소 조회 (삭제 X)
isEmpty() 큐가 비어 있는지 확인

예제 코드:

Queue<String> queue = new LinkedList<>();
queue.offer("A");
queue.offer("B");

System.out.println(queue.poll()); // A (먼저 들어온 요소가 제거됨)
System.out.println(queue.peek()); // B (두 번째 요소 조회)

(4) Map 인터페이스를 구현하는 클래스 (HashMap, TreeMap)

클래스 특징
HashMap<K, V> 키-값 쌍 저장, 순서 보장 안 됨
TreeMap<K, V> 키 기준으로 정렬
메서드 설명
put(K key, V value) 키-값 추가
get(Object key) 키에 해당하는 값 반환
remove(Object key) 키에 해당하는 요소 삭제
containsKey(Object key) 특정 키 존재 여부 확인
containsValue(Object value) 특정 값 존재 여부 확인

예제 코드:

Map<String, Integer> map = new HashMap<>();
map.put("Apple", 100);
map.put("Banana", 200);

System.out.println(map.get("Apple")); // 100
System.out.println(map.containsKey("Banana")); // true

2. Collections 유틸리티 클래스

자바에서는 java.util.Collections 클래스를 제공하여 컬렉션을 조작하는 다양한 기능을 지원한다.

메서드 설명
sort(List<T> list) 리스트 정렬
reverse(List<T> list) 리스트 역순 정렬
shuffle(List<T> list) 요소 섞기
max(Collection<T> coll) 최대값 반환
min(Collection<T> coll) 최소값 반환

예제 코드:

List<Integer> numbers = Arrays.asList(5, 3, 8, 1);
Collections.sort(numbers);
System.out.println(numbers); // [1, 3, 5, 8]

Collections.reverse(numbers);
System.out.println(numbers); // [8, 5, 3, 1]

3. 정리

List : 순서가 있는 자료구조 (중복 허용)
Set : 중복을 허용하지 않는 자료구조
Queue : 선입선출(FIFO) 자료구조
Map : 키-값 쌍을 저장하는 자료구조
Collections 유틸리티 클래스를 활용하면 컬렉션을 더욱 편리하게 조작 가능!

즉, 자바의 컬렉션을 잘 활용하면 효율적인 데이터 관리와 조작이 가능하다!