■ 컬렉션(Collection) :
- 개체를 그룹화하는 방법 중 하나
- 컬렉션(System.Collections)에는 ArrayList, Queue, Stack, Hashtable 등을 지원
* 컬렉션은 Object 형식 데이터를 저장, 컬렉션(System.Collections)은 박싱(Boxing), 언박싱(UnBoxing)이 발생하여
많이 사용하게 되면 성능 저하가 올 수 있음
* 가능하면 컬렉션(System.Collections) 대신에 제네릭 컬렉션(System.Collections.Generic 또는 System.Collections.Concurrent) 사용
■ ArrayList :
- 필요에 따라 크기가 동적으로 증가하는 개체 배열
- 제네릭 컬렉션 List<T> 로 대체 사용
■ Example
// ArrayList
Console.WriteLine($"===== ArrayList Example =====");
ArrayList arrayList = new ArrayList();
arrayList.Add(10);
arrayList.Add(20);
arrayList.Add(30);
foreach (var item in arrayList)
Console.WriteLine($"[arrayList] {item}");
arrayList.RemoveAt(1);
foreach (var item in arrayList)
Console.WriteLine($"[arrayList] {item}");
Console.WriteLine();
// Generic Collection : List<T>
Console.WriteLine($"===== List<T> Example =====");
List<int> list = new List<int>();
list.Add(10);
list.Add(20);
list.Add(30);
foreach (var item in list)
Console.WriteLine($"[list] {item}");
list.RemoveAt(1);
foreach (var item in list)
Console.WriteLine($"[list] {item}");
■ Queue :
- 선입선출(FIFO : First In First Out) 방식의 개체 컬렉션
- 제네릭 컬렉션 Queue<T> 로 대체 사용
■ Example
// Queue
Console.WriteLine($"===== Queue Example =====");
Queue queue = new Queue();
queue.Enqueue(10);
queue.Enqueue(20);
queue.Enqueue(30);
Console.WriteLine($"[queue] {queue.Dequeue()}");
Console.WriteLine($"[queue] {queue.Dequeue()}");
Console.WriteLine($"[queue] {queue.Dequeue()}");
Console.WriteLine();
// Generic Collection : Queue<T>
Console.WriteLine($"===== Queue<T> Example =====");
Queue<int> g_queue = new Queue<int>();
g_queue.Enqueue(10);
g_queue.Enqueue(20);
g_queue.Enqueue(30);
Console.WriteLine($"[g_queue] {g_queue.Dequeue()}");
Console.WriteLine($"[g_queue] {g_queue.Dequeue()}");
Console.WriteLine($"[g_queue] {g_queue.Dequeue()}");
■ Stack :
- 선입후출(FILO : First In Last Out) 방식의 개체 컬렉션
- 제네릭 컬렉션 Stack<T> 로 대체 사용
■ Example
// Stack
Console.WriteLine($"===== Stack Example =====");
Stack stack = new Stack();
stack.Push(10);
stack.Push(20);
stack.Push(30);
Console.WriteLine($"[stack] {stack.Pop()}");
Console.WriteLine($"[stack] {stack.Pop()}");
Console.WriteLine($"[stack] {stack.Pop()}");
Console.WriteLine();
// Generic Collection : Stack<T>
Console.WriteLine($"===== Stack<T> Example =====");
Stack<int> g_stack = new Stack<int>();
g_stack.Push(10);
g_stack.Push(20);
g_stack.Push(30);
Console.WriteLine($"[g_stack] {g_stack.Pop()}");
Console.WriteLine($"[g_stack] {g_stack.Pop()}");
Console.WriteLine($"[g_stack] {g_stack.Pop()}");
■ Hashtable :
- 키(Key)와 값(Value) 쌍의 요소로 구성된 사전 형식의 컬렉션
- 키(Key)를 이용해 빠른 검색 제공
- 제네릭 컬렉션 Dictionary<TKey, TValue> 로 대체 사용
■ Example
// Hashtable
Console.WriteLine($"===== Hashtable Example =====");
Hashtable hashtable = new Hashtable();
hashtable.Add("AA", 100);
hashtable.Add("BB", 200);
hashtable.Add("CC", 300);
Console.WriteLine($"[hashtable] {hashtable["AA"]}");
Console.WriteLine($"[hashtable] {hashtable["BB"]}");
Console.WriteLine($"[hashtable] {hashtable["CC"]}");
Console.WriteLine();
// Generic Collection : Dictionary<TKey, TValue>
Console.WriteLine($"===== Dictionary<TKey, TValue> Example =====");
Dictionary<string, int> dictionary = new Dictionary<string, int>();
dictionary.Add("AA", 100);
dictionary.Add("BB", 200);
dictionary.Add("CC", 300);
Console.WriteLine($"[dictionary] {dictionary["AA"]}");
Console.WriteLine($"[dictionary] {dictionary["BB"]}");
Console.WriteLine($"[dictionary] {dictionary["CC"]}");
'개인공부 > C#' 카테고리의 다른 글
[C#] 일반화(Generalization) (0) | 2022.09.26 |
---|---|
[C#] 인덱서(Indexer), IEnumerable, IEnumerator (0) | 2022.09.26 |
[C#] 배열(Array) (0) | 2022.09.22 |
[C#] 프로퍼티(Property) (0) | 2022.09.21 |
[C#] 인터페이스(Interface), 추상클래스(Abstract class) (0) | 2022.09.19 |