ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컬렉션, 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
Designed by Tistory.