컬렉션이란?
프로그래밍을 통하여 어플리케이션을 제작할 때, 대부분의 경우 특정 개체나, 값의 그룹을 만들고 관리하여야 할 필요가 있다. 개체의 그룹을 만들고 관리하는 방법에는 배열을 만들거나 컬렉션을 만드는 두 가지 방법이 있다.
C#의 기본 배열은 크기가 고정된 배열을 만들어 관리하는데 유리하지만, 크기를 변경하려면 새로운 배열을 재할당하여야 한다.
컬렉션은 개체 그룹에 대해 작업하는 보다 유연한 방법을 제공한다. 그룹의 크기를 동적으로 확장/축소할 수 있으며, 일부 그룹의 경우 컬렉션에 들어가는 개체에 키를 할당하여 개체를 신속하게 검색할 수 있다.
컬렉션의 종류
닷넷에서 사용하는 컬렉션들은 여러 네임스페이스에 분산되어 있다.
System.Collection.Generic
- Dictionary<Tkey, TValue>
- Tkey 값을 해시 함수로 해싱하여 해시테이블을 구현한 키/값 쌍의 컬렉션이다.
- List<T>
- 인덱스로 엑세스할 수 있는 개체 목록을 나타낸다.
- 제공된 다양한 메서드를 사용하여 목록의 검색/정렬/수정을 진행할 수 있다.
- Queue<T>
- Stack<T>
- SortedList<TKey,TValue>
- IComparer<T> 구현을 기반으로 한, 키에 따라 정렬된 키/값 쌍의 컬렉션을 나타낸다.
System.Collections
System.Collections 네임스페이스의 클래스는 제네릭 타입이 아닌 Object 형식의 개체로 요소를 저장하기때문에,
가능하면, 해당 네임스페이스의 레거시 형식 대신 System.Collection.Generic의 제네릭 컬렉션을 사용하여야한다.
- ArrayList : 필요에 따라 크기가 동적으로 증가하는 개체 배열
- Hashtable : 키의 해시 코드에 따라 구성괸 키/값 쌍의 컬렉션
- Queue : 선입선출 방식의 큐 컬렉션
- Stack : 선입선출 방식의 스택 컬렉션
System.Collections.Concurrent
.Net Framework 4 이상 버전에서 사용가능한 System.Collections.Concurrent 네임스페이스의 컬렉션은. 멀티스레드 연산에서 안전하게 엑세스할 수 있는 컬렉션들을 제공한다.
- BlockingCollection<T>
- ConcurrentDictionary<TKey, TValue>
- ConcurrentQueue<T>
- ConcurrentStack<T>
등의 컬렉션이 있다.
같이 보기
https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/concepts/collections#BKMK_Concurrent