일반화 리스트(Generic List)는 동적으로 크기가 조정되는 배열을 구현하는 자료구조입니다. 일반화 리스트는 System.Collections.Generic 네임스페이스에 있는 List<T>
클래스를 사용하여 정의한다.
List<T>
클래스는 배열과 비슷하지만, 배열과는 달리 크기가 동적으로 조정될 수 있으며, 요소의 추가, 삭제, 검색 등에 대한 다양한 기능을 제공한다.
List의 사용법은 아래와 같다.
List<자료형> 변수명 = new List<자로형>()
List나 Dictionary는 굉장히 자주 사용되는 컬렉션이다.
Add
를 이용하여 값을 추가할 수 있다.
Insert
함수
중간에 값을 추가하는 함수.
lists.Insert(3, 1000);
변수명.Insert(인덱스, 값)
단, Insert는 뒤의 값들을 모두 뒤로 밀어줘야하기 때문에,
리스트 내에 큰 값이 저장되어 있는 경우, 퍼포먼스 상에서 불이익이 있다.
InsertRange
(인덱스, 배열)
배열내의 전체 값을 리스트에 저장할 수 있다.
상단의 코드는,
lists[2] 값부터 222~444 값이 할당되었다.
위의 코드에서 상단의 함수는, 선언과 동시에 초기화를 하는 로직이고,
또한, 하단의 함수는 배열을 이용해 초기화를 하는 법이다.
기본적으로 Sort함수를 이용하여 정렬할 수 있다.
Sort함수는 함수 파라미터를 입력받아, 사용자 임의대로 정렬 우선 순위를 조정할 수 있다.
위 정렬 제어함수에서 리턴값을 바꾸면, 내림차순으로 바꿀 수 있다.
위 코드는 정렬 함수를 대리자(delegate_를 이용하여, 정렬 함수를 완성하여 Sort의 정렬 순서를 변경하고, 해당 값을 출력한 이미지이다.
Find
Predicate를 조건으로 하는 Find 함수.
해당 조건을 만족하는 첫 번째 값을 반환한다.
Find역시도 Sort와 마찬가지로, Delegate
를 바로 입력하여, 조건을 바로 입력할 수 있다.
FindAll
조건을 만족하는 전체 값을 리스트 형태로 반환하는 맴버 함수이다.
FindAll 역시도 Delegate를 사용하여, 곧바로 조건을 입력할 수 있다.
FindIndex
조건을 만족하는 Index를 찾는 함수.
이를 응용하여, 조건을 만족하는 인덱스를 찾고, 해당 인덱스의 값을 가져오는 코드도 구현할 수 있다.
110 이상의 값을 만족하는 Value가 리스트 내에 존재하지 않기 때문에, FindIndex에서 –1을 반환한다.
따라서, findIndex의 양수 검출 조건문에서 거짓 결과가 나오게 되고.
이 경우, 리스트 내의 값을 출력하지 못한다.
Remove
:원하는 값을 직접 제거할 수 있는 함수.
Contains
:원하는 값이 리스트 내에 있는지 판별하는 함수.
이때, 원하는 값이 있을 경우 참.
없을 경우 거짓을 반환한다.
이를 응용하여, 리스트 내 값을 찾을 수 있다.
Exists
Exists함수는 Contains와 비슷하지만, 조건을 delegate와 같이, 제너릭 형태로 받는다는 점에서 활용성이 더 높다고 할 수 있다.