일반화(Generic) 컬렉션(Collections)은 타입 안전성을 보장하는 컬렉션이다. 기본적으로
List<T>LinkedList<T>Dictionary<TKey, TValue>Queue<T>Stack<T>등이 있다.
일반화 컬렉션은 박싱(boxing)과 언박싱(unboxing)을 줄여 성능을 향상시키며, 컴파일 타임에 타입 체크를 하므로 런타임 에러를 줄인다.
List<T>List<T>는 배열과 유사하며, 인덱스를 사용하여 요소에 접근할 수 있다. 동적으로 크기가 변경될 수 있다.
List<int> myList = new List<int> {1, 2, 3};
myList.Add(4); // 리스트에 4 추가
int firstElement = myList[0]; // 1
LinkedList<T>LinkedList<T>는 양방향 링크드 리스트를 구현한 컬렉션이다. 각 노드가 다음 노드와 이전 노드를 가리킨다. 인덱스를 사용한 요소 접근(랜덤 액세스)이 불가능하다.
LinkedList<int> myLinkedList = new LinkedList<int>();
myLinkedList.AddLast(1);
myLinkedList.AddLast(2);
myLinkedList.AddLast(3);
Dictionary<TKey, TValue>키-값 쌍을 저장하는 해시 테이블을 구현한 컬렉션이다. 키는 고유해야 하며, 값은 키를 통해 빠르게 검색될 수 있다.
Dictionary<string, int> myDict = new Dictionary<string, int>
{
{"apple", 1},
{"banana", 2}
};
myDict["orange"] = 3;
int appleValue = myDict["apple"]; // 1
Queue<T>FIFO (First In, First Out) 선입선출 구조를 가진 컬렉션이다.
Queue<int> myQueue = new Queue<int>();
myQueue.Enqueue(1);
myQueue.Enqueue(2);
int first = myQueue.Dequeue(); // 1
Stack<T>LIFO (Last In, First Out) 후입선출 구조를 가진 컬렉션이다.
Stack<int> myStack = new Stack<int>();
myStack.Push(1);
myStack.Push(2);
int last = myStack.Pop(); // 2
일반화 (Generic): 타입을 매개변수로 받아 동적으로 타입을 생성할 수 있게 하는 프로그래밍 기법.
타입 안전성 (Type Safety): 컴파일 타임에 타입의 올바른 사용을 검증, 잘못된 타입 사용 시 에러를 발생시킴.