C# 제네릭 컬렉션과 비제네릭 컬렉션 정리
제네릭 컬렉션
컬렉션 이름 | 설명 | 버전 |
---|---|---|
List<T> | 요소를 순서대로 저장하는 동적 배열 | .NET 2.0 |
LinkedList<T> | 각 요소가 컬렉션 내의 다음 요소와 이전 요소를 가리키는 노드로 구성된 이중 연결 리스트 | .NET 2.0 |
Stack<T> | LIFO (Last In First Out) 정책을 사용하는 컬렉션. 순서-역순서 보장 | .NET 2.0 |
Queue<T> | FIFO (First In First Out) 정책을 사용하는 컬렉션. 순서 보장 | .NET 2.0 |
PriorityQueue<TElement, TPriority> | 우선순위 큐, 우선순위에 따라 순서를 보장하는 완전 이진 트리 | .NET 6.0 |
HashSet<T> | 해시 테이블 기반 집합, 고유한 요소만 저장하는 데 사용 (중복 키 허용하지 않음) | .NET 3.5 |
SortedSet<T> | 완전 이진 트리 기반 집합, 고유한 요소만 저장하는 데 사용 (중복 키 허용하지 않음) | .NET 4.0 |
Dictionary<TKey, TValue> | 해시 테이블 기반 키-값 쌍, 각 키는 고유 | .NET 2.0 |
SortedDictionary<TKey, TValue> | 완전 이진 트리 기반 키-값 쌍, 각 키는 고유 | .NET 2.0 |
SortedList<TKey, TValue> | 내부적으로 두 개의 배열(키 배열과 값 배열)을 사용하는 키-값 쌍, 삽입/삭제의 시간이 더 드는 대신 캐시 효율성이 더 좋음(SortedDictionary에 비해) | .NET 2.0 |
ConcurrentBag<T> | 스레드 안전한 동시성 컬렉션. 스택과 유사하게 동작하나, 순서 보장 없음 | .NET 4.0 |
ConcurrentDictionary<TKey, TValue> | 스레드 안전한 해시 테이블 기반 키-값 쌍 | .NET 4.0 |
ConcurrentQueue<T> | 스레드 안전한 FIFO 정책을 사용하는 동시성 큐, 순서 보장 | .NET 4.0 |
ConcurrentStack<T> | 스레드 안전한 LIFO 정책을 사용하는 동시성 스택, 순서-역순서 보장 | .NET 4.0 |
BlockingCollection<T> | 스레드 안전하며, 생산자-소비자 패턴 지원 컬렉션 | .NET 4.0 |
ObservableCollection<T> | 데이터 바인딩 시 변경 사항을 알릴 수 있는 이벤트 발생 컬렉션 | .NET 3.0 |
비제네릭 컬렉션
비제네릭 컬렉션은 object
타입을 사용하는 컬렉션으로 박싱/언박싱이 빈번하게 일어나는 컬렉션입니다.
다만, object
타입과 박싱/언박싱에 대한 이해도를 가지고, 다양한 타입을 하나의 컬렉션에 저장하기 위한 용도로 쓰일 수도 있으니 제네릭과 중복되는 형태의 컬렉션을 포함하여 정리하겠습니다.
컬렉션 이름 | 설명 |
---|---|
ArrayList | 요소를 순서대로 저장하는 동적 배열. 인덱스를 통해 접근 가능 |
Stack | LIFO (Last In First Out) 정책을 사용하는 컬렉션. 순서-역순서 보장 |
Queue | FIFO (First In First Out) 정책을 사용하는 컬렉션. 순서 보장 |
Hashtable | 키-값 쌍을 저장하는 해시 테이블 기반 컬렉션. 각 키는 고유 |
SortedList | 키에 따라 자동으로 정렬되는 키-값 쌍의 컬렉션. 각 키는 고유 |
BitArray | 비트(0 또는 1)의 배열로, 각 비트를 개별적으로 조작할 수 있음 |
ListDictionary | 연결 리스트 기반의 작은 규모의 딕셔너리. 대규모 데이터에는 비효율적. |
HybridDictionary | 작은 컬렉션에는 ListDictionary , 컬렉션이 커지면 Hashtable 로 전환하는 컬렉션 |
StringCollection | 문자열만을 저장하는 간단한 리스트. 문자열 작업에 최적화됨 |
참고
우선순위 큐(Priority Queue)와 힙(Heap)
이 기사는 저작권자의 CC BY-NC-ND 4.0 라이센스를 따릅니다.