동적 배열로 구현됨 인덱스를 통한 접근이 빠름 중간에 요소를 삽입하거나 삭제할 때 성능이 떨어질 수 있
LinkedList
이중 연결 리스트로 구현됨 요소의 추가 및 삭제가 용이
Vector
동기화된 리스트 멀티스레드 환경에서 안전함 성능이 저하될 수 있음
Set
분류
클래스명
설명
설명
중복되지 않는 요소의 집합 순서가 보장되지 않음 요소의 유일성을 보장
주요 메서드
add() remove() contains() size()
주요 구현 클래스
HashSet
해시 테이블 기반으로 구현됨 가장 일반적인 Set 구현 요소의 순서를 보장하지 않음
LinkedHashSet
HashSet의 특성을 가지면서, 요소의 삽입 순서를 유지
TreeSet
정렬된 Set 요소가 자연 순서 또는 제공된 비교기에 의해 정렬
Map
분류
클래스명
설명
설명
키-값 쌍의 집합 각 키는 유일해야 함 키를 사용하여 값을 조회할 수 있음 키와 값의 순서가 보장되지 않
주요 메서드
put() get() remove() containsKey() keySet()
주요 구현 클래스
HashMap
해시 테이블 기반으로 구현된 가장 일반적인 Map 키의 순서를 보장하지 않
LinkedHashMap
삽입 순서를 유지하는 HashMap의 변형
TreeMap
키를 정렬된 순서로 유지하는 Map
Queue
분류
클래스명
설명
설명
FIFO(First In First Out) 구조를 가진 요소의 집합 요소를 추가하고 제거하는 작업이 중요
주요 메서드
offer() poll() peek() size()
주요 구현 클래스
LinkedList *
Queue 인터페이스를 구현함 큐의 양쪽 끝에서 요소를 추가하고 제거할 수 있음
PriorityQueue
우선순위에 따라 요소가 처리되는 큐 우선순위가 높은 요소가 먼저 처리
ArrayDeque
동적 배열 기반의 덱(Deque) 큐와 스택의 기능을 모두 지원
* LinkedList는 리스트와 큐 두 가지 기능을 모두 제공하는 다목적 자료구조임. List, Queue 인터페이스를 모두 구현 가능함 즉, 요소의 순서를 유지하고 중복을 허용하는 리스트로서의 기능과 FIFO 구조를 가진 큐로서의 기능을 모두 수행할 수 있음 사용자가 필요에 따라 리스트나 큐로서 활용
import java.util.LinkedList;
import java.util.List;
public class LinkedListExample {
public static void main(String[] args) {
// List로서의 LinkedList 사용
List<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
System.out.println("List: " + list); // 출력: List: [Apple, Banana, Cherry]
// Queue로서의 LinkedList 사용
LinkedList<String> queue = (LinkedList<String>) list;
queue.offer("Date");
System.out.println("Queue after offer: " + queue); // 출력: Queue after offer: [Apple, Banana, Cherry, Date]
System.out.println("Poll: " + queue.poll()); // 출력: Poll: Apple
System.out.println("Queue after poll: " + queue); // 출력: Queue after poll: [Banana, Cherry, Date]
}
}
요약
종류
특
List
순서가 있으며 중복 가능
Set
중복 불가, 순서 없음
Map
키-값 쌍, 키는 유일
Queue
FIFO 구조, 요소 추가 및 제거 중요
이러한 Java의 컬렉션 인터페이스들을 이용하면 데이터 구조를 효과적 관리 및 사용할 수 있음.
비고
1. LinkedList는 써본 적 없는 것 같은데 찾아보니까 신기하네. Queue도 안 익숙하다. 중요한 내용 같으니 잘 인식해두자.