Collection
콜렉션
하나의 단위로 참조될 수 있는 정렬된 항목 집합
1. 배열 : 고정된 개수의 형식 개체
2. 배열과 달리, APP의 요구에 따라 작업하는 개체 그룹이 동적으로 확장되거나 축소
3. 일부는 개체에 신속하게 접근할 수 있도록 컬렉션에 추가하는 모든 개체에 키를 할당할 수 있다.
4. 정확한 형태가 아닌 object 형으로 항상 boxing(값형식 -> Object, Stack -> Heap), unboxing(반대)이 일어난다.
System.collections : 구체적으로 형식화된 객체가 아니라 Object형식의 객체로 요소를 저장
1. ArrayList : 필요에 따라 크기가 동적으로 증가하는 개체 배열, 변수형을 지정하지 않고 데이터를 넣어둔다.
(Object)형으로 알아서 저장이 된다. 다형성(IEnumerable을 구현하기 때문에 IEnumerable 변수에 넣을 수 있다.
IEnumerable 형으로 자료를 받았다면 ArrayList의 기능을 모두 사용할 수는 없고, IEnumerable에서 사용할 수 있는기능만 사용한다.
->명시적 형변환으로 ArrayList로 변환을 하면 다시 이용할 수 있다.)
2. Hashtable : 키의 해시코드에 따라 구성된 키/값 쌍의 컬렉션을 나타낸다.
키와 값을 가진 데이터를 저장하는 자료구조 배열에서는 Arr[0]이런 식으로 접근하는데 해쉬 테이블은 Ht[“Apple”] = 이런식으로 접근한다.
인덱스가 아닌 키를 가지고 값에 접근(빠름)
3. Queue : FIFO방식으 개체 컬렉션
4. Stack : LIFO방식의 개체 컬렉션
System.collections.Generic
1. 코드의 재사용성을 높이고 타입에 대한 안정성을 높일 수 있는 장점이 있지만, 코드의 크기가 커지고 가독성이 떨어진다.
2. Object형이 아닌 정확한 자료형을 넣기 때문에 boxing/unboxing을 하지 않는다.
그렇기 때문에 성능이 좋다.
3. 클래스를 사용할 때 타입을 지정
List<T> = index로 접근할 수 있는 강력한 형식, 검색, 정렬, 조작, 데이터 중복 가능
Dictionary<Tkey, Tvalue> : TKey에 대응되는 Tvalue를 KeyValuePair<Tkey, Tvalue> 형태로 저장
'SW > C#' 카테고리의 다른 글
Lambda Expression (람다식) (0) | 2017.09.05 |
---|---|
Collection method (콜렉션 메소드) (0) | 2017.09.05 |
LINQ (0) | 2017.09.05 |