C#의 ArrayList.Capacity 속성을 사용하면 ArrayList가 포함할 수 있는 요소 수를 가져오거나 설정할 수 있습니다. 이 속성은 실제 저장된 요소 개수(Count)와는 다르게, 내부적으로 할당된 저장 공간의 크기를 나타냅니다.
Capacity를 명시하지 않고 ArrayList를 생성하면 기본 용량이 적용되며, 요소가 추가되어 용량을 초과하면 자동으로 늘어납니다.
예제 1: 기본 Capacity 확인하기
아래 예제에서는 별도의 용량 지정 없이 ArrayList를 생성한 후, 요소를 추가하고 Count와 Capacity 값을 출력합니다.
using System;
using System.Collections;
public class Demo {
public static void Main() {
ArrayList arrList = new ArrayList();
arrList.Add(25);
arrList.Add(50);
arrList.Add(75);
arrList.Add(100);
arrList.Add(125);
arrList.Add(150);
arrList.Add(175);
arrList.Add(200);
arrList.Add(225);
arrList.Add(250);
Console.WriteLine("ArrayList의 요소...");
foreach(int i in arrList) {
Console.WriteLine(i);
}
Console.WriteLine("요소 개수(Count) = " + arrList.Count);
Console.WriteLine("용량(Capacity) = " + arrList.Capacity);
}
}출력 결과
ArrayList의 요소... 25 50 75 100 125 150 175 200 225 250 요소 개수(Count) = 10 용량(Capacity) = 16
위 결과를 보면 요소는 10개뿐이지만 Capacity가 16으로 표시됩니다. 이는 기본 생성자로 ArrayList를 만들면 초기 용량이 설정되고, 요소 추가 시 용량을 초과하면 내부 배열이 자동으로 확장되기 때문입니다.
예제 2: 생성 시 초기 Capacity 지정하기
ArrayList 생성자에 원하는 용량을 전달하면 처음부터 그만큼의 공간이 할당됩니다. 아래 예제에서는 초기 용량을 10으로 지정했습니다.
using System;
using System.Collections;
public class Demo {
public static void Main() {
ArrayList arrList = new ArrayList(10);
arrList.Add(25);
arrList.Add(50);
arrList.Add(75);
arrList.Add(100);
Console.WriteLine("ArrayList의 요소...");
foreach(int i in arrList) {
Console.WriteLine(i);
}
Console.WriteLine("요소 개수(Count) = " + arrList.Count);
Console.WriteLine("용량(Capacity) = " + arrList.Capacity);
}
}출력 결과
ArrayList의 요소... 25 50 75 100 요소 개수(Count) = 4 용량(Capacity) = 10
생성 시 용량을 10으로 지정했기 때문에 요소가 4개뿐이더라도 Capacity는 정확히 10입니다. 미리 필요한 크기를 알고 있다면 초기 용량을 지정하는 것이 불필요한 재할당과 성능 저하를 방지하는 좋은 방법입니다.
정리
- Capacity: ArrayList가 담을 수 있는 최대 요소 수 (저장 공간 크기)
- Count: 실제로 저장된 요소의 개수
- 요소 추가로 Capacity를 초과하면 용량이 자동으로 증가합니다.
- TrimToSize() 메서드를 사용하면 사용하지 않는 여유 용량을 줄일 수 있습니다.