Chapter 8-2. 자료구조 : List

Date:     Updated:

카테고리:

태그:

인프런에 있는 Rookiss님의 강의 Part1: C# 기초 프로그래밍 입문 를 듣고 정리한 필기입니다. 😀

👩🏼 List (동적 배열 = 가변적 크기의 배열)

C#에서의 List 👉 동적 배열! 크기가 고정적이지 않으며 가변적이다. C++에서 vector같은 존재.

  • using System.Collections.Generic;을 해주어야 사용이 가능하다.
  • 얘도 클래스이기 때문에 List 타입의 객체를 생성하면 참조를 하게 된다는 의미가 된다.
    • new를 사용하여 생성해야 함.
using System.Collections.Generic;

List<int> list = new List<int>();  // 빈 상태
  • 빈 상태일 때 없는 인덱스에 접근하면 런타임 에러 예외가 발생한다.
    • 이건 정적배열도 마찬가지.
  • 중간 삽입, 중간 삭제가 효율적이지 않다.
    • 뒤에 있는 원소들이 전부 다 한 칸씩 밀리거나 앞으로 땡겨야 하기 때문이다. 그 과정에서 사본을 생성해야 하는 일도 발생.
  • 대신 임의 접근은 굉장히 빠르다. 인덱스로 접근하기 때문에! 배열의 특징.


Count : 크기 리턴 (리스트 길이)

List<int> list = new List<int>();
for (int i = 0; i < 5; i++)
    list.Add(i); // 0 1 2 3 4

Console.WriteLine(list.Count); // 5

함수 아니고 프로퍼티다.


Add : 맨 끝에 삽입

List<int> list = new List<int>();

list.Add(1); // 원소 1 을 추가.

List의 끝에다가 새로운 원소를 추가한다. vectorpush_back같은 함수.


Insert : 중간에 삽입

List<int> list = new List<int>();

for(int i = 0; i < 5; i++)
    list.Add(i); // 0 1 2 3 4

list.Insert(2, 999); // 인덱스2 자리에 원소 999 추가 👉 0 1 999 2 3 4


Remove : 원소로 search 하여 삭제

List<int> list = new List<int>();

for(int i = 0; i < 5; i++)
    list.Add(i); // 0 1 2 3 4

list.Add(3);  // 0 1 2 3 4 3
list.Remove(3);  // 0 1 2 4 3

인수로 넘긴 원소와 동일한 원소들이 있을 수 있지만 가장 처음 만난 원소를 삭제한다. 그리고 삭제에 성공하면 True 리턴, 해당 원소를 찾지 못했다면 False 리턴. bool타입을 리턴한다.


RemoveAt : 인덱스로 삭제

List<int> list = new List<int>();

for(int i = 0; i < 5; i++)
    list.Add(i); // 0 1 2 3 4

list.RemoveAt(0);  // 1 2 3 4

인수로 넘긴 인덱스에 해당하는 원소를 삭제한다.


Clear : 원소 전부 삭제하여 리스트 비우기

list.Clear();  // 리스트 내의 모든 원소를 싸그리 지운다.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

C Sharp 카테고리 내 다른 글 보러가기

댓글 남기기