Chapter 8-2. 자료구조 : List
카테고리: C Sharp
태그: C Sharp Programming
인프런에 있는 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의 끝에다가 새로운 원소를 추가한다. vector
의 push_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(); // 리스트 내의 모든 원소를 싸그리 지운다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기