Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- this 키워드
- 프로퍼티와 생성자
- c#
- 일반화 클래스
- 클래스 연습문제
- 접근 한정자
- 컬렉션 초기화
- 프로퍼티
- 이것이C#이다
- 인터페이스 상속
- 무명형식
- 인터페이스의 프로퍼티
- 인덱서
- 배열
- 형식변환
- 배열초기화
- as
- 메소드숨기기
- 가변배열
- 인터페이스 예제
- 튜플
- System.Array
- is
- 오버라이딩
- 중첩클래스
- 자동구현프로퍼티
- base()
- 클래스
- 분할 클래스
- 추상 프로퍼티
Archives
- Today
- Total
제로의영역
10.8 컬렉션을 초기화하는 방법 본문
* 본 블로그 글은 머리가 아~~~주 나쁜 왕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 |