Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 ArrayList의 Capacity 속성으로 포함 가능한 요소 수 가져오기 및 설정하기

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() 메서드를 사용하면 사용하지 않는 여유 용량을 줄일 수 있습니다.