[C#] 8.2 컬렉션

프로그래밍하다 보면 여러 개의 개체를 구조적으로 관리하는 것은 자주 발생합니다. C#에서는 요소 개체의 집합체인 컬렉션을 다양하게 제공하고 있으며 같은 인터페이스를 기반으로 구현 약속하여 하나의 컬렉션 사용법을 익히면 다른 컬렉션을 사용법을 익히기 쉽습니다.

C#에서 제공되는 컬렉션에는 하나의 개체로 보관하는 컬렉션들과 키와 값을 쌍으로 보관하는 컬렉션들이 있습니다. 하나의 개체로 보관하는 컬렉션들은 IList 인터페이스를 기반이거나 ICollection 인터페이스를 기반으로 정의되어 있습니다. 그리고 키와 쌍으로 보관하는 컬렉션들은 IDictionary 인터페이스를 기반으로 정의되어 있습니다.

또한, IList와 IDictionary 인터페이스는 모두 ICollection 인터페이스를 기반으로 정의되어 있어서 같은 방법으로 사용할 수 있습니다.

그리고 C#의 일반적인 컬렉션은 어떠한 형식 요소든지 보관할 수 있습니다. 만약 특정 형식의 개체만 보관할 수 있게 보관할 요소의 형식을 명확하게 명시하여 강력하게 형식 지정하는 제네릭 컬렉션을 제공하고 있습니다.

 

다음은 C#에서 제공되는 컬렉션 중에서 자주 사용되는 것들입니다.

인터페이스 클래스 이름 설명
IList Array 배열 형식의 기반 클래스, 용량이 고정
ArrayList 자동 확장이 되는 배열의 고급 버전
List<T> 제네릭 컬렉션
IDictionary Hashtable 해쉬 함수를 통해 빠른 검색이 가능
SortedList 키를 기준으로 정렬
SortedList<TKey,TValue> 제네릭 컬렉션
Dictionary<TKey,TValue> 제네릭 컬렉션
SortedDictionary

<TKey,TValue>

제네릭 컬렉션, 키를 기준으로 정렬
ICollection Queue 선입선출(FIFO)
Queue<T> 제네릭 컬렉션
Stack 후입선출(LIFO)
Stack<T> 제네릭 컬렉션

8.2.1 IEnumerable, IEnumerator 인터페이스

8.2.2 ICollection 인터페이스

8.2.3 IList 인터페이스

8.2.3 IDictionary 인터페이스

8.2.5 IComparable 인터페이스와 IComparer 인터페이스