-
컬렉션, ArrayList의 사용C# 예제 공부일기 2020. 7. 14. 20:32
컬렉션이란 같은 형의 데이터를 모아서 처리하는 자료구조이다. 배열도 컬렉션의 하나이다.
컬렉션에는 "제네릭 컬렉션" 과 "제네릭이 아닌 컬렉션" 두가지 유형이 있다. .Net 프레임워크 에서 추가된 제네릭 컬렉션이 일반적으로 성능이 더 뛰어나다고 한다.
(1) 컬렉션의 공통 기능
- 모든 컬렉션은 항목 추가, 제거 또는 찾기를 위한 방법을 제공한다.
- 컬렉션을 열거하는 기능 : 모든 컬렉션은 Enumerable 또는 IEnumerable<T> 인터페이스를 구현하므로 열거할 수 있고, foreach문을 사용할 수 있다. IEnumerable<T> 를 구현하는 모든 컬렉션은 LINQ를 사용하여 쿼리할 수 있다.
- 컬렉션의 내용을 배열에 복사하는 기능 : CopyTO 메소드를 사용하면 컬렉션을 배열에 복사할 수 있다. 결과 배열은 항상 1차원이며 하한은 0이다.
사실 뭔소린지 잘 모르겠다. 개념책에서의 ArrayList는 모든 자료형, 객체형 까지도 받아들일 수 있는 리스트라고 설명하는데 Enumerable, IEnumerable<T> 인터 페이스에 대해서는 나중에 공부한다,
LINQ 쿼리 : LINQ 쿼리는 C#의 새로운 키워드 from, where, orderby, group-by, join, select 등을 이용하여 데이타소스에 대해 쿼리를 실행하는 것이다.
(2) 그 외의 기능
- Capacity 및 Count 속성 : 컬렉션의 Capacity는 컬렉션에 포함할 수 있는 요소의 수이고, 컬렉션의 Count는 컬렉션에 실제로 포함되어 있는 요소의 수이다. (Capacity : 용량 , Count : 실제 요소) 대부분의 컬렉션은 용량의 한계에 도달하면 자동으로 용량을 확장한다.
- 일관된 하한 : 컬렉션의 하한은 첫 번째 요소의 인덱스이다. System.Collections 네임스페이스의 모든 컬렉션은 하한이 0이다. 즉 0부터 인덱싱된다.
시나리오 별 컬렉션 선택 기준
수행할 작업 Generic Collection Non-generic Collection 키 별로 빠르게 조회할 수 있도록 키/값 쌍으로 저장 Dictionary<TKey,TValue> Hashtable 인덱스별로 항목 액세스 List<T> Array, ArrayList FIFO 방식으로 항목 사용 Queue<T> Queue LIFO 방식으로 데이터 사용 Stack<T> Stack 순서대로 항목 액세스 LinkedList<T> - 컬렉션에 항목을 추가하거나 삭제할 때 알림 표시 ObserveableCollection<T> - 정렬된 컬렉션 SortedList<TKey, TValue> SortedList 수학 함수용 집합 HashSet<T>
SortedSet<T>- 위와 같은 컬렉션이 있을 때
ArrayList만 예제가 있다. 배열과 유사한 컬렉션이며, 배열과 달리 용량을 미리 지정할 필요가 없이 필요에 따라 자동으로 용량이 늘거나 줄어든다.
ArrayList에는 모든 타입의 값이 저장 될 수 있다. 매개변수로 Object을 가지고 있는데 모든 자료형은 Object 클래스를 상속받으므로 어떠한 형식의 데이터도 저장이 가능하다.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ArrayListPractice { class Program { static void Main(string[] args) { ArrayList a = new ArrayList(); Random r = new Random(); PrintValues(a); for(int i=0;i<10;i++) { a.Add(r.Next(100)); } PrintValues(a); a.Sort(); PrintValues(a); a.RemoveAt(3); PrintValues(a); } private static void PrintValues(ArrayList a) { Console.WriteLine("Print Values in ArrayList"); Console.WriteLine(" Count = {0} ", a.Count); Console.WriteLine("Capacity = {0} ", a.Capacity);// foreach (var i in a) { Console.Write(" {0}", i); } Console.WriteLine(); } } }
ArrayList
의 기능 중 Sort와 Add, RemoveAt을 사용했다.
'C# 예제 공부일기' 카테고리의 다른 글
List<T>와 배열의 정렬 (0) 2020.07.20 List<T> 컬렉션 (0) 2020.07.14 큐를 이용한 프로그램 (0) 2020.07.14 Queue<T> 의 구현 (0) 2020.07.14 스택을 이용한 프로그램 (0) 2020.07.14