컬렉션 프레임워크
컬렉션 프레임워크는 데이터를 쉽게, 효과적으로 처리할 수 있는 데이터 구조를 제공한다.
재사용 가능하고 표준화된 인터페이스를 제공하기 때문에 코드의 일관성과 유지보수성을 높일 수 있다.
또한, 다양한 데이터 구조와 기능을 손쉽게 사용하도록 도와주므로 개발자가 필요에 따라 적합한 컬렉션을 선택하고 사용할 수 있게 해줍니다.
컬렉션 프레임워크 구성요소

List 인터페이스
- 순서가 있는 컬렉션을 구현하는데 사용된다.
- 같은 요소의 중복 저장 허용
- 배열과 같이 인덱스로 요소에 접근
- 리스트와 달리 자료형의 크기가 고정이 아니라 데이터 양에 따라 동적으로 늘어났다가 줄어들었다가 변환이 가능하다.
ArrayList 클래스
- 배열을 이용하여 만든 리스트
- 단방향 포인터 구조로 자료 조회가 빠르다.
- 하지만 삽입, 삭제가 느리다.
LinkedList 클래스
- 노드를 연결하여 리스트처럼 만든 컬렉션 (배열 아니다)
- ArrayList와 다르게 삽입, 삭제가 빠르다.
- 하지만, 어떠한 요소 접근에는 성능이 좋지 않다.
Queue 인터페이스
PriorityQueue 클래스
- 우선순위 큐
우선순위를 부여하여 우선순위가 높은 순으로 정렬되고 꺼낼 수 있다.
- 수행할 작업이 여러 개 있고 그 중에서 우선순위를 정해서 꺼내야 하는 경우 사용된다.
- 가장 크거나, 가장 작은 값을 빠르게 찾을 수 있다.
- 저장 공간을 배열로 사용하며, 각 요소를 힙 형태로 저장한다.
Deque 클래스
- Double-Ended Queue: 양쪽으로 넣고 빼는 것이 가능한 큐
- 스택으로도 사용 가능하고, 큐로도 사용 가능하다.
LinkedList 클래스
- 맨 위 사진을 보면 LinkedList는 List 인터페이스와 Queue 인터페이스 둘 다 동시에 상속받고 있다. 그래서 스택, 큐로서도 사용이 가능하다.
Set 인터페이스
- 데이터 중복 저장 허용 안 한다.
- 순서 유지 안 한다. -> 인덱스 없다. -> get 메소드 없음
HashSet 클래스
- 배열과 노드 연결한 자료 구조
- 검색 속도가 빠르다.
- 순서 예측 불가능
LinkedHashSet 클래ㅅ
- 순서를 가지는 Set
- 추가된 순서, 가장 최근에 접근한 순서대로 접근 가능하다.
TreeSet 클래스
- 이진 검색 트리 자료구조 형태로 데이터 저장
- 데이터 정렬하여 가지고 있지만, 순서는 없다.