제로의영역

10.8 컬렉션을 초기화하는 방법 본문

C#

10.8 컬렉션을 초기화하는 방법

아이큐제로 2019. 9. 19. 17:07

* 본 블로그 글은 머리가 아~~~주 나쁜 왕X100초보가 프로그래밍을 공부하면서 정리를 위해 작성하는 글입니다. 잘못 정리되거나 제가 잘못 이해한 글은 이해 및 조언 부탁드립니다.

* 공부는 '이것이 C#이다' 책을 보고 하고 있습니다. 참고로 저같은 왕초보가 보기 어렵게 써져 있어서 별도의 정리 문서를 만들게 되었습니다.

 

1. ArrayList, Queue, Stack의 초기화

 (1) 배열의 도움을 받아 간단하게 초기화 수행 가능.

 (2) 이들 컬렉션의 생성자를 호출할 때 매개 변수로 배열 객체를 넘기면 컬렉션 객체는 해당 배열을 바탕으로 내부 데이터를 채움.

 

예제)

int[] arr={123, 456, 789};

ArrayList list = new ArrayList(arr);	//123, 456, 789
Stack stack = new Stack(arr);	//789, 456, 123
Queue queue = new Queue(arr);	//123, 456, 789

 (3) ArrayList는 배열의 도움없이 직접 컬렉션 초기자를 이용해서 초기화하는 것이 가능

ArrayList list2 = new ArrayList( ) {11, 22, 33};	// 컬렉션 초기자는 생성자를 호출할 때, 생성자 뒤에 {와} 사이에 컬렉션 요소의 목록을 입력하여 사용

 (4) Stack과 Queue는 컬렉션 초기자 이용 불가능: 컬렉션 초기자는 IEnumerable인터페이스와 Add( ) 메소드를 구현하는 컬렉션만 지원하는데, 이 두 컬렉션은 IEnumerable은 상속하지만 Add( ) 메소드를 구현하지 않고 있기 때문.

 

2. Hashtable의 초기화

 (1) 딕셔너리 초기자를 이용

Hashtable ht = new Hashtable( )
{
	["하나"] = 1,	// ;가 아니라 ,를 이용하여 항목을 구분
    ["둘"] = 2,
    ["셋"] = 3
 };

 (2) 컬렉션 초기자 사용가능하지만 딕셔너리 초기자가 쉬워 딕셔너리 초기자 사용 권장

Hahtable ht2 = new Hashtable()
{
	{"하나", 1},
    {"둘", 2},
    {"셋", 3}
};

 

예제)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using static System.Console;

namespace _10._12
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = { 123, 456, 789 };

            ArrayList list = new ArrayList(arr);    //123, 456, 789
            foreach (object item in list)   //list의 데이터들을 순차적으로 아래에 코딩에 적용
                WriteLine($"ArrayList:{item}");
            WriteLine();

            Stack stack = new Stack(arr);   //stack은 먼저들어온 데이터가 나중에 나가고 나중에 들어온 데이터가 먼저나가는 구조: 789,456,123
            foreach (object item in stack) 
                WriteLine($"Stack:{item}");
            WriteLine();

            Queue queue = new Queue(arr);   //Queue는 입력된 순서대로 하나씩 꺼내 처리하는 구조:123, 456, 789
            foreach (object item in queue)
                WriteLine($"Queue:{item}");
            WriteLine();

            ArrayList list2 = new ArrayList() { 11, 22, 33 };   //컬렉션 초기자를 활용한 초기화
            foreach (object item in list2)
                WriteLine($"ArrayList2:{item}");
            WriteLine();
        }
    }
}

실행결과

ArrayList:123
ArrayList:456
ArrayList:789

 

Stack:789
Stack:456
Stack:123

 

Queue:123
Queue:456
Queue:789

 

ArrayList2:11
ArrayList2:22
ArrayList2:33

'C#' 카테고리의 다른 글

10.10 foreach가 가능한 객체 만들기  (0) 2019.12.26
10.9 인덱서  (0) 2019.11.18
10.6 가변 배열  (0) 2019.08.09
10.5 다차원배열  (0) 2019.08.09
10.4 2차원 배열  (0) 2019.08.06