2024.03.13 - List
여러 개의 같은 타입의 데이터를 주고받을 때 배열(Array)을 많이 썼다.
배열 좋긴한데 길이가 고정되어 있는 거랑, 선언할 때 길이를 정해줘야 하는 게 맘에 안 든다.
선언만 해두고 요소를 추가하면 크기가 알아서 늘어나는 배열 없을까?
- List
C#에서는 List<T> 클래스를 통해서 배열처럼 인덱스를 통해 각 요소에 접근 가능한 자료구조를 제공한다.
List는 배열과 유사하지만, 배열과 다르게 동적으로 크기가 늘어나는 특징을 가지고 있다.
- List의 특징
List는 배열처럼 인덱스로 List의 데이터에 접근이 가능하다.
하지만 크기가 정해져 있는 배열과 달리, List는 크기를 벗어난 인덱스에 데이터를 추가하려고 하면, 동적으로 크기가 변한다.
List에 데이터를 삽입/삭제 하면 뒤 인덱스의 다른 데이터들이 다른 칸(메모리)으로 옮겨진다.
- List를 생성하는 방법
List<자료형> 객체_이름 = new List<자료형>();
- List에 데이터를 추가하기(Add)
객체_이름.Add( 넣을_데이터 )
Add는 List의 가장 뒤의 인덱스에 데이터를 추가해준다.
- List에 포함된 요소 수 반환(Count)
객체_이름.Count
- List의 요소 제거(Remove, RemoveAt)
객체_이름.Remove( 특정_데이터 ) // List에서 맨 처음 발견되는 특정_데이터 제거
객체_이름.RemoveAt( 인덱스 ) // List의 지정된 인덱스의 요소 제거
Remove로 2번 인덱스에 있던 "데이터1"을 제거했지만, 뒤의 데이터가 빈 자리를 채우면서 RemoveAt(2)로 2번 인덱스의 데이터를 지울 때 2번 인덱스로 옮겨진 "데이터3이 제거되었다.
- List의 요소 삽입(Insert)
객체_이름.Insert(인덱스, 데이터) //List의 지정된 인덱스에 데이터를 삽입
- List의 요소 모두 제거(Clear)
객체_이름.Clear()
- 현재 List가 크기를 조정하지 않고 보유할 수 있는 요소 수(용량) 반환(Capacity)
객체_이름.Capacity
빈 List의 용량은 0이다.
List에 데이터를 추가했더니 용량이 4로 늘어났다.
데이터를 인덱스 범위를 벗어난 곳에 추가하려 할때마다 용량은 2배가 된다.
한번 늘어난 List는 요소를 모두 제거하더라도 용량이 유지된다. (메모리 공간을 차지함)