C# List(리스트)에 대해 알아보자!

2024. 3. 10. 18:32· C#/자료구조 이해하기
목차
  1. List(리스트)란?
  2.   List(리스트)를 사용해보자!

List(리스트)란?

  • 리스트는 c#에서 제공하는 동적 배열을 나타내는 데이터 구조입니다. 여기서 동적 배열이란 일반적으로 크기가 고정된 배열과 달리 크기를 자유롭게 조절할 수 있습니다. 예를들면, 끝이 정해지지 않은 무한열차...라고 생각하시면 될 것 같습니다.
  • using System.Collection.Generic; 를 네임스페이스에 적어야 사용할 수 있습니다.

  • 위에서 말했다시피 리스트의 가장 큰 장점은 배열과 달리 방의 개수를 정하지 않아도 된다는 것입니다. 배열은 방의 개수 또는 값을 할당해서 선언해줘야하는데, 리스트는 그러지 않아도 선언과 초기화가 되기 때문입니다.
//int형 값을 가질 수 있는 비어있는 리스트 생성.
List<int> listInt = new List<int>();

//해당 데이터 값을 리스트에 직접 할당.
List<int> listInt2 = new List<int> { 1, 2, 3, 4, 5 };

 

<이미지 출처: https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdD1xZJ%2Fbtrb8hpHHBr%2FAAAAAAAAAAAAAAAAAAAAAC7AgecJ5c4YjLef7lCBjy3DufeWv3ksp0jyD8hHhhpV%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DMnEzA6oThC2C51nWnSDQo%252F1PJeg%253D>


  List(리스트)를 사용해보자!

1.  Add(T item) - 리스트에 값 추가

  • Add()는 리스트에 넣고싶은 값을 추가하는 매서드입니다. 괄호 안에 해당 리스트와 같은 데이터 형식의 값을 넣어주시면 됩니다.
//int형 데이터 값을 가질 수 있는 리스트.
List<int> listInt = new List<int>();

listInt.Add(10);
listInt.Add(20);
listInt.Add(30);

//string형 데이터 값을 가질 수 있는 리스트.
List<string> listString = new List<string>();

listString.Add("리스트는");
listString.Add("동적 배열");
listString.Add("끝이 없지");

 

2. AddRange - 리스트에 다른 리스트를  추가

  • AddRange는 리스트에 다른 리스트를 추가하는 것입니다. 단, 데이터 타입이 다르다면 에러가 뜹니다.
//int형 데이터 값을 가질 수 있는 리스트.
List<int> listInt = new List<int>();

listInt.Add(10);
listInt.Add(20);
listInt.Add(30);

List<int> addRangeList = new List<int> { 40, 50, 60 };

listInt.AddRange(addRangeList);

//리스트를 콘솔창에 출력할 때는 foreach문을 사용하는 것이 좋다.
//for문은 반복 횟수가 정해져 있기 때문.
foreach (var item in listInt)
{
	Debug.Log(item);
}

 

3. Remove(T item) - 특정 요소 제거

  • Remove()는 괄호 안의 값을 해당 리스트 안에서 제거합니다. 단, 만약 리스트 안에 같은 값이 여러 개가 존재하여 Remove를 여러 번 해주면 앞에 있는 값부터 제거됩니다. 또한 리스트는 값을 제거하는 순간 그 방의 존재도 사라지게 되며 아래 예제처럼 진행하면 20이 0번방의 값이 되는 겁니다.
//int형 데이터 값을 가질 수 있는 리스트.
List<int> listInt = new List<int> { 10, 10, 20, 10, 30, 10 };
        
//listInt리스트에서 10을 3번 제거.
listInt.Remove(10);
listInt.Remove(10);
listInt.Remove(10);

foreach (var item in listInt)
{
	Debug.Log(item);
}

4. RemoveAt(int index) - 지정된 방 번호의 값을 제거

  • RemoveAt()은 괄호 안의 인덱스 즉, 방 번호에 해당하는 값을 제거합니다.
//int형 데이터 값을 가질 수 있는 리스트.
List<int> listInt = new List<int> { 10, 10, 20, 10, 30, 10 };

//listInt 리스트에서 2번방의 값을 제거.
listInt.RemoveAt(2);

foreach (var item in listInt)
{
	Debug.Log(item);
}

 

5. RemoveAll(Predicate <T> match) - 특정 값을 리스트에서 전부 제거

  • RemoveAll()은 괄호 안의 값을 해당 리스트에서 전부 제거합니다.
  • Predicate는 bool형식의 컬렉션입니다. 즉 true or false를 판단하는 것입니다. 그래서 람다식을 사용해주었습니다. 내가 제거하려는 값이 리스트에 있는지 없는지 판단한 후 있으면 true, 해당 값을 전부 제거합니다. 반대로 false, 해당 값이 리스트에 없으면 아무것도 하지 않습니다.
//int형 데이터 값을 가질 수 있는 리스트.
List<int> listInt = new List<int> { 10, 10, 20, 10, 30, 10 };

//리스트에 10이 존재하기 때문에 10을 제거.
listInt.RemoveAll(x => x == 10);

//리스트에 50이 존재하지 않기 때문에 아무것도 안함.
listInt.RemoveAll(x => x == 50);

foreach (var item in listInt)
{
	Debug.Log(item);
}

 

6. Count - 리스트의 길이

  • 해당 리스트의 길이 즉, 방의 개수를 리턴합니다.
List<int> listInt = new List<int> { 10, 10, 20, 10, 30, 10 };

int num = listInt.Count;

Debug.Log(num);

7. Clear() - 전부 제거

  • 해당 리스트의 모든 값을 제거합니다.

8. Contain(T item) - 리스트에 특정 요소가 포함되어 있는지 여부를 확인

 List<int> listInt = new List<int> { 10, 10, 20, 10, 30, 10 };

bool contain30 = listInt.Contains(30);
bool contain50 = listInt.Contains(50);

Debug.Log(contain30);
Debug.Log(contain50);


 

'C# > 자료구조 이해하기' 카테고리의 다른 글

C# 연결리스트(Linked List)에 대해 알아보자!  (0) 2024.03.13
C# 오름차순과 내림차순 정렬에 대해 알아보자!  (0) 2024.03.10
C# Dictionary에 대해 알아보자!  (0) 2024.03.05
C# 스택(Stack)에 대해 알아보자!  (0) 2024.03.05
C# 큐(Queue)에 대해 알아보자!  (0) 2024.03.05
  1. List(리스트)란?
  2.   List(리스트)를 사용해보자!
'C#/자료구조 이해하기' 카테고리의 다른 글
  • C# 연결리스트(Linked List)에 대해 알아보자!
  • C# 오름차순과 내림차순 정렬에 대해 알아보자!
  • C# Dictionary에 대해 알아보자!
  • C# 스택(Stack)에 대해 알아보자!
ForMan_
ForMan_
C# 언어로 프로그래머스 문제를 풀이하고, Unity 엔진으로 게임을 개발하며, 자료구조를 공부하는 과정을 반복문처럼 꾸준히 탐구하고 공유하는 '반복해서 노력하는 남자, ForMan'의 블로그입니다.
ForMan_
반복해서 노력하는 남자, ForMan
ForMan_
전체
오늘
어제
  • 분류 전체보기
    • C#
      • 프로그래머스 코딩 문제 풀이
      • 자료구조 이해하기
      • 알고리즘 기초 익히기
    • Unity
      • Unity 디자인 패턴
      • Unity 타워디펜스게임 프로젝트
      • Unity 물리기반 Merge게임 프로젝트(수박라..
      • Unity FPS게임 프로젝트(오버워치라이크)
    • UI
      • 젠레스존제로 UI작업 시작
      • 젠레스존제로 UI 이펙트 작업
      • 젠레스존제로 UI 사운드 작업
      • 젠레스존제로 UI 스크롤뷰 작업(메뉴창)

블로그 메뉴

  • 홈
  • 방명록
  • 태그

최근 글

최근 댓글

인기 글

태그

  • 유니티게임프로젝트
  • 프로그래머스
  • 오버워치만들기
  • 유니티디자인패턴
  • 과일합치기
  • 수박게임
  • forman
  • 게임프로젝트
  • 유니티게임
  • 오름차순
  • 타워디펜스게임
  • 머쓱이
  • 동적프로그래밍
  • 완전탐색
  • c#
  • 오버워치
  • 코딩테스트
  • Unity
  • 유니티
  • 정렬알고리즘
Thanks for Skin
hELLO · Designed By 정상우.v4.2.2
ForMan_
C# List(리스트)에 대해 알아보자!
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.