컬렉션(Collection) 이란?
- 컬렉션(Collection)이란 여러 개의 데이터를 저장하고 관리하는 객체를 말합니다. 자바의 컬렉션 프레임워크는 이러한 데이터를 다루기 위한 표준화된 API를 제공합니다. 이를 통해 다양한 데이터 구조와 알고리즘을 손쉽게 구현할 수 있습니다. 자바의 컬렉션 프레임워크는 주로 java.util 패키지에 포함되어 있습니다.
컬렉션의 주요 인터페이스
- List
- 정의 : 순서가 있는 요소의 컬렉션으로, 중복을 허용한다.
- 주요 구현 클래스 : ArrayList, LinkedList, Vector, Stack
- 특징 : 인덱스를 사용하여 요소에 접근할 수 있으며, 삽입 순서가 유지된다.
- Set
- 정의 : 순서가 없고 중복을 허용하지 않은 요소의 컬렉션
- 주요 구현 클래스 : HashSet, LinkedHashSet, TreeSet
- 특징 : 요소의 유일성을 보장하며, 특정 구현에 따라 순서가 유지되거나 정렬된다.
- Queue
- 정의 : 요소를 처리하는 순서를 정의하는 컬렉션(FIFO)
- 주요 구현 클래스 : LinkedList, PriorityQueue, ArrayDeque
- 특징 : 큐는 주로 데이터를 일시적으로 저장하고 처리하는 데 사용한다.
- Deque
- 정의 : 양쪽 끝에서 요소를 추가하거나 제거할 수 있는 컬렉션
- 주요 구현 클래스 : ArrayDeque, LinkedList
- 특징 : 큐의 특성을 확장하여 양 끝에서의 삽입 및 삭제를 지원한다.
- Map
- 정의 : 키-값 쌍으로 요소를 저장하는 컬렉션
- 주요 구현 클래스 : HashMap, LinkedHashMap, TreeMap, HashTable
- 특징 : 키는 중복을 허용하지 않으며, 각 키는 하나의 값과 연결된다.
위 주요 인터페이스로 구현된 클래스에 대해서 살펴보겠다.
주요 컬렉션 구현 클래스
- List 구현 클래스
- ArrayList
- 설명 : 내부적으로 배열을 사용하여 요소를 저장한다.
- 장점 : 요소의 접근 속도가 빠르다.
- 단점 : 중간에 요소를 삽입하거나 삭제하는 작업이 비효율적이다.
- LinkedList
- 설명 :이중 연결 리스트를 사용하여 요소를 저장한다.
- 장점 : 삽입과 삭제가 빠르다.
- 단점 : 요소의 접근 속도가 느리다.
- Vector
- 설명 : ArrayList와 유사하지만, 동기화되어 멀티스레드 환경에서 안전하다.
- Stack
- 설명 : 후입선출(LIFO) 구조의 컬렉션으로, Vector 클래스를 확장하여 구현했다.
- ArrayList
- Set 구현 클래스
- HashSet
- 설명 : 해시 테이블을 사용하여 요소를 빠르게 저장한다.
- 장점 : 빠른 검색 속도를 제공한다.
- 단점 : 순서를 보장하지 않는다.
- LinkedHashSet
- 설명 : 해시 테이블과 연결 리스트를 사용하여 요소를 저장한다.
- 장점 : 삽입 순서를 유지한다.
- TreeSet
- 설명 : 이진 검색 트리를 사용하여 요소를 저장한다.
- 장점 : 요소가 정렬된 순서로 저장된다.
- HashSet
- Queue 구현 클래스
- LinkedList
- 설명 : 큐 인터페이스를 구현하며, 양쪽 끝에서 요소를 추가하거나 제거할 수 있다.
- PriorityQueue
- 설명 : 요소를 자연 순서나 제공된 비교자에 따라 정렬하여 저장합니다. ( 비교자에 우선권에 따라 FIFO가 아닌 동작을 할 수 있다.)
- ArrayDeque
- 설명 : 배열을 기반으로 하는 덱(Deque) 구현으로, 큐와 덱 기능을 모두 제공한다.
- LinkedList
- Map 구현 클래스
- HashMap
- 설명: 해시 테이블을 사용하여 키-값 쌍을 저장한다.
- 장점: 빠른 검색 속도를 제공한다.
- 단점: 순서를 보장하지 않는다.
- LinkedHashMap
- 설명: 해시 테이블과 연결 리스트를 사용하여 키-값 쌍을 저장한다.
- 장점: 삽입 순서를 유지한다.
- TreeMap
- 설명: 이진 검색 트리를 사용하여 키-값 쌍을 저장한다.
- 장점: 키가 정렬된 순서로 저장한다.
- Hashtable
- 설명: 해시 테이블을 사용하여 키-값 쌍을 저장한다.
- 장점: 동기화되어 멀티스레드 환경에서 안전하다.
- 단점: null 키와 값을 허용하지 않는다.
- HashMap
각 구현 클래스에 대한 자세한 사용방법 및 예시는 추후에 다뤄보도록 하겠습니다.
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JAVA - 컬렉션 Set (0) | 2024.06.24 |
---|---|
JAVA - 컬렉션 List (0) | 2024.06.21 |
JAVA - 배열(Array) 와 컬렉션 (Collection)의 차이점 (0) | 2024.06.21 |
JAVA - I/O 와 NIO 차이 (0) | 2024.06.21 |
JAVA - 배열 복사하기 (2) | 2024.03.15 |