📘프로그래밍/C#

[C#] 13 List

bohemdev1 2024. 11. 16. 02:26

정의

 

인덱스로 접근할 수 있는 강력한 형식의 개체 목록

 

 

▼ 기본 속성

더보기

 

네임스페이스               System.Collections.Generic

어셈블리                       System.Collections.dll

소스                               List.cs           

 

 

 

기능

 

 

 

기본 형식

 

다음은 목록 생성의 기본 형식입니다.

List<T> ListName = new List<T>();
List<T> ListName = new List<T>(Int32);

 

T 는 사용자가 지정한 데이터형 입니다. 매개변수로 값을 전달할 경우 해당 크기를 갖는 목록을 생성합니다.

 

 

 

기본 메서드

 

List<T> 클래스는 생성된 목록을 검색, 정렬 및 조작하는 메서드를 기본적으로 제공합니다.

 

 

▼ 대표적인 기본 메서드

Add(T) List<T> 끝에 개체를 추가합니다.
RemoveAt(Int32) List<T> 지정된 인덱스에 있는 요소를 제거합니다.
Insert(Int32, T) 지정된 인덱스의 List<T> 요소를 삽입합니다.
Sort(Comparison<T>) 지정된 Comparison<T> 사용하여 전체 List<T> 요소를 정렬합니다.
Clear() List<T> 모든 요소를 제거합니다.

 

 

 

RemoveAt

중간에 위치한 요소를 제거한 경우 이후에 위치한 요소들은 앞으로 한 칸씩 이동합니다.

 

Insert

중간 위치에 요소를 삽입한 경우 이후에 위치한 요소들은 뒤로 한 칸씩 이동합니다. 목록의 크기를 벗어난 인덱스를 전달할 경우 오류가 발생합니다. 

 

 

▼ 사용 예시: Add, RemoveAt, Insert

using System.Collections.Generic;

void Start()
{
	string a_Result;
	List<int> a_List = new List<int>();

	// Add: 마지막 위치에 요소 삽입
	a_List.Add("a ");
	a_List.Add("b ");
	a_List.Add("c ");

	a_Result = "";
	foreach (string item in a_List) { a_Result += item; }
	Debug.Log(a_Result);
    
	// RemoveAt: 중간 위치의 요소 제거
	a_List.RemoveAt(1);
    
	a_Result = "";
	foreach (string item in a_List) { a_Result += item; }
	Debug.Log(a_Result);
    
	// Insert: 중간 위치에 요소 삽입
	a_List.Insert(1, "d ");
	a_List.Insert(2, "e ");

	a_Result = "";
	foreach (string item in a_List) { a_Result += item; }
	Debug.Log(a_Result);
}

/*
a b c
a c
a d e c
*/

 

 

 

Sort

비교함수 Comparison<T> 는 기본적으로 오름차순 정렬합니다. 사용자 정의 비교함수를 통해 임의의 정렬 방식을 설정할 수 있습니다.

 

▼ 사용 예시: Sort, Clear

using System.Collections.Generic;

int Comp(string a, string b)
{
	return b.CompareTo(a);
}

void Start()
{
	string a_Result;
	List<string> a_List = new List<string>();

	// Add: 마지막 위치에 요소 삽입
	a_List.Add("a ");
	a_List.Add("b ");
	a_List.Add("c ");
	a_List.Add("d ");

	a_Result = "";
	foreach (string item in a_List) { a_Result += item; }
	Debug.Log(a_Result);
    
	// Sort: 목록 내 요소 정렬
	a_List.Sort(Comp);
    
	a_Result = "";
	foreach (string item in a_List) { a_Result += item; }
	Debug.Log(a_Result);
    
	// Clear: 목록 내 모든 요소 제거
	a_List.Clear();

	Debug.Log("Node Count: " + a_List.Count);
}

/*
a b c d
d c b a
Node Count: 0
*/

 

사용자 정의 함수 Comp 에서 정렬 방식에 따른 반환값은 다음과 같습니다.

  • 오름차순 정렬(String 형식의 경우 사전적 정렬) 의 경우 a.CompareTo(b) 를 반환합니다.
  • 내림차순 정렬의 경우 b.CompareTo(a) 를 반환합니다.

 

 

 


 

 

List<T> 클래스 (System.Collections.Generic)

인덱스로 액세스할 수 있는 강력한 형식의 개체 목록을 나타냅니다. 목록을 검색, 정렬 및 조작하는 메서드를 제공합니다.

learn.microsoft.com

 

 

List<T>.Sort 메서드 (System.Collections.Generic)

지정된 또는 기본 IComparer<T> 구현 또는 제공된 Comparison<T> 대리자를 사용하여 List<T>의 요소 또는 요소의 일부를 정렬하여 목록 요소를 비교합니다.

learn.microsoft.com

'📘프로그래밍 > C#' 카테고리의 다른 글

[C#] 12 네임스페이스  (0) 2024.11.02
[C#] 11 정적 멤버  (1) 2024.11.02
[C#] 10 REF / OUT  (1) 2024.11.01
[C#] 09 생성자 / 소멸자  (2) 2024.10.31
[C#] 08 클래스  (1) 2024.10.30