개발자 성장일지

Part 배열 && 컬렉션 본문

인프런/이것이 C# 이다

Part 배열 && 컬렉션

hdigimon 2023. 11. 14. 10:32

1. 배열

  • 같은 형식의 복수 인스턴스를 저장할 수 있는 형식
  • 참조형식으로써 연속된 메모리 공간을 가리킴
  • 반복문, 특히 for/foreach문과 함께 사용하면 효율 향상
  • 꺽쇠 괄호 []안에 배열의 크기를 지정하여 다음과 같이 선언

1) 배열 초기화 방법

1. 기본

  1. 배열의 원소 개수를 명시
  2. 배열의 각 원소에 입력될 데이터를 입력 {}으로 감싼 블록을 붙임

2. 요소개수 생략

  1. 배열의 요소 개수 생략
  2. 배열의 각 원소에 입력될 데이터를 입력 {}으로 감싼 블록을 붙임

3. new 연산자 형식, 요소개수생략

  1. new 연산자, 형식과 괄호 {}, 배열의 용량을 모두 생략
  2. 배열의 각 원소에 입력될 데이터를 입력 {}으로 감싼 블록을 붙임

2) 다차원 배열 - 2차원 배열

  • 2개의 차원(세로+가로)으로 요소 배치
  • 차원의 길이를 뒤에서부터 읽어 해석
  • 배열의 세 가지 초기화 방법 모두 사용가능

3) 가변 배열

  • 배열의 배열, 즉 배열을 요소로 갖는 배열
  • 요소로 입력되는 배열의 차원과 길이는 같아야 할 필요 없음
  • 가변 배열 선언 형식

2. 컬렉션

1) ArrayList

  • 배열과 같이 인덱스를 이용하여 요소에 접근가능
  • 필요에 따라 동적으로 크기가 증가
  • 요소를 추가하는 Add(), 삭제하는 RemoveAt(), 삽입하는 Insert() 메소드 등을 제공

 

2) Queue

  • 선입선출 구조의 자료구조
  • 데이터를 입력하는 Enqueue(), 출력하는 Dequeue() 메소드 제공

 

3) Stack

  • 선입후출 구조의 자료구조
  • 데이터를 입력하는 Push(), 출력하는 Pop() 메소드 제공

4) Hashtable

  • 키와 값으로 이루어진 데이터를 다룰 때 사용
  • 키를 해싱해서 테이블 내의 주소를 계산
  • 배열처럼 다루기 간편하고 탐색속도도 빠름

3. 일반화 프로그래밍

  • 데이터형식 일반화를 이용하는 프로그래밍 패러다임
  • 한 가지 코드를 다양한 데이터 형식에 활용

1) 일반화 메소드

  • 데이터형식을 일반화 한 메소드
  • 메소드 이름 뒤에 형식 매개 변수를 입력하여 작성
    • 형식 매개 변수 : <> 사이에 일반화 데이터 형식을 입력
    • 컴파일 단계에서 형식 매개 변수는 실제 형식으로 치환됨

2) 일반화 클래스

  • 데이터 형식을 일반화한 클래스
  • 클래스 이름 뒤에 형식 매개 변수를 입력하여 작성

3) 형식 매개 변수 제약

  • 형식 매개 변수가 특정 조건을 갖추도록 강제하는 기능
  • 문법: "where 형식매개변수 : 제약조건"
    • 예) 형식 매개 변수 T를  MyClass의 파생 클래스로 제약 

 

※ where 절과 함께 사용할 수 있는 제약조건

4) 일반화 컬랙션

  • 컬랙션(ArrayList, Queue, Stack, Hashtable)은 object 형식 기반
  • 컬랙션의 요소에 접근할 때마다 발생하는 박싱/언박싱은 성능의 저하로 이어짐
  • 일반화 컬랙션은 형식매개변수를 이용하여 버그와 성능저하를 줄임
    • 컴파일 단계에서 형식매개변수가 특정 형식으로 치환되기 때문
  • 일반화 컬랙션은 System.Collection.Genereic 네임스페이스에 위치
  • 공부할 컬렉션
    • List<T>
    • Queue<T>
    • Stack<T>
    • Dictionary<TKey, TValue>

 

'인프런 > 이것이 C# 이다' 카테고리의 다른 글

Part 람다식 && LINQ  (0) 2023.11.14
Part 대리자 && 이벤트  (1) 2023.11.14
Part 인터페이스 && 프로퍼티  (0) 2023.11.13
Part 메소드 && 클래스  (0) 2023.11.12
Part 연산자 & 흐름 제어  (1) 2023.11.09