728x90
Java에서는 List가 인터페이스다. 그래서 실제로 사용하려면 ArrayList나 LinkedList 등을 사용했다.
하지만 C#에서는 List가 클래스다. 물론 IList라는 인터페이스도 존재한다.
여튼 List를 Java의 ArrayList나 LinkedList 처럼 사용하면 되겠다.
★ C#에서 맨 앞에 I가 붙으면 인터페이스를 뜻한다는 것을 참고하자.
본인이 인터페이스를 만들 때도 I를 붙여서 구분되기 쉽게 하는 게 좋겠다. ★
그럼 List를 생성하는 것부터 주로 쓰는 함수를 알아보자.
1. 생성
List<T> list = new List<T>(); //T는 제네릭이다. 제네릭에 대한 공부는 따로 해오자.
List<int> myList = new List<int>(){1, 2, 3}; //myList는 1, 2, 3을 가진다.
List<int> yourList = new List<int>(myList); //yourList가 myList를 받는다.
List<int> list = new List<int>(5); //공간이 5인 List를 만든다.
이 아래부터는 사용될 리스트가 이미 생성된 상태라고 가정한다.
2. 인덱스
list[i] // list에서 i 번째 요소를 가져온다.
3. 함수
list.Add(5); // list 맨 뒤에 5를 추가한다. 지금은 int형 list라고 가정하기 때문에, 다른 형은 그에 맞춰서 사용
myList.AddRange(yourList); //myList 뒤에 yourList를 추가한다. (한 요소가 아닌 리스트 자체를 추가)
list.Clear(); // list를 비워준다.
list.Contains(3); // list가 3을 포함하고 있는지 확인. boolean 값 반환.
list.Exists(i = > i>2); // 2보다 큰 요소를 가지고 있는지 확인. boolean 값 반환. Contains와 다르게 조건이 들어간다는 것을 참고
myList.Equals(yourList); // myList와 yourList가 같은지 확인. boolean 값 반환.
list.Find(i = > i>2); // 2보다 큰 요소를 가지고 있는지 확인. 해당 값을 반환. 없으면 0
myList = list.FindAll(i = > i>2); // list에서 2보다 큰 요소 모두를 myList로 반환.
list.ForEach(action); // 지정된 action을 실행. list 요소 형을 파라미터로 가지는 메소드 넣을 수 있음. 아니면 람다식으로 action 지정
list.Insert(2, 7); // 2번째 인덱스에 7을 넣어라. 공간과 값은 본인 마음대로.
myList.InsertRange(2, yourList); // AddRange와 비슷한데, Insert처럼 인덱스를 지정하는 것임.
list.Remove(3); // list 중 3이라 값을 삭제 (앞에서부터 첫 번째 것만)
list.RemoveAll(action); // 메소드나, 람다식 넣어서 조건에 맞는 것 모두 삭제
list.RemoveAt(3); // 인덱스 3의 요소를 삭제
list.RemoveRange(2, 1); // 대충 감이 오죠? 인덱스 2부터 1개 삭제
list.Reverse(); // list 순서를 거꾸로 만들어줌
list.Reverse(1, 2); // 인덱스 1부터 2개의 요소 순서를 거꾸로 만듦
list.Sort(); // 정렬. 기본 오름차순
list.Sort(action); // action에 뭔가 넣으면 해당 조건으로 정렬
int [] arr = list.ToArray(); // list를 array로 바꿔줌
이외에도 List에는 수많은 함수들이 있다. 전체를 한번 읽어보고 필요할 때 찾아서 사용하는 게 좋겠다.
https://docs.microsoft.com/ko-kr/dotnet/api/system.collections.generic.list-1?view=netcore-3.1
728x90
'개발 > C#' 카테고리의 다른 글
Lambda Expression - 람다식 (0) | 2020.07.21 |
---|---|
as, is 연산자 (0) | 2020.07.21 |
값형식과 참조형식 (0) | 2020.07.13 |
Stack and Heap (0) | 2020.07.13 |
? / ?? - C#의 물음표 (0) | 2020.07.13 |
댓글