ArrayList 및 List 컬렉션 형식

업데이트: 2007년 11월

ArrayList 또는 List<T> 개체는 고급 버전의 배열입니다. ArrayList 클래스 및 List<T> 제네릭 클래스는 대부분의 System.Collections 클래스에서 제공되지만 Array 클래스에서는 제공되지 않는 일부 기능을 제공합니다. 예를 들어, 다음과 같습니다.

  • Array의 용량은 고정되어 있지만 ArrayList 또는 List<T>의 용량은 필요에 따라 자동으로 확장됩니다. Capacity 속성의 값이 변경될 경우 메모리 재할당 및 요소 복사가 자동으로 이루어집니다.

  • ArrayListList<T>은 요소 범위를 추가, 삽입 또는 제거하는 메서드를 제공합니다. Array에서는 한 번에 하나의 요소 값만 얻거나 설정할 수 있습니다.

  • Synchronized 메서드를 사용하면 ArrayList의 동기화된 버전을 손쉽게 만들 수 있습니다. Array 클래스는 동기화 구현을 전적으로 사용자에게 맡깁니다.

  • ArrayListList<T>은 읽기 전용 및 고정 크기의 래퍼를 컬렉션에 반환하는 메서드를 제공하지만 Array는 해당 메서드를 제공하지 않습니다.

반면, ArrayArrayListList<T>이 제공하지 못하는 유연성을 제공합니다. 예를 들어, 다음과 같습니다.

  • Array의 하한을 설정할 수 있지만 ArrayList 또는 List<T>의 하한은 항상 0입니다.

  • Array는 여러 차원을 가질 수 있지만 ArrayList 또는 List<T>은 항상 한 차원만 가집니다.

  • 특정 형식(Object 제외)의 Array 성능은 ArrayList 성능보다 좋습니다. ArrayList의 요소는 Object 형식이므로 값 형식을 저장하거나 검색할 경우 대개 boxing 및 unboxing이 발생하기 때문입니다. 그러나 List<T> 성능은 재할당이 필요 없는 경우 같은 형식의 배열 성능과 비슷할 수 있습니다. 즉, 초기 용량이 목록의 최대 크기와 비슷합니다.

배열을 호출하는 대부분의 상황에서 ArrayList 또는 List<T>을 대신 사용할 수 있습니다. 이 둘은 일반적으로 사용이 간편하고 해당 성능은 동일한 형식의 배열 성능과 비슷합니다.

ArraySystem 네임스페이스에 있고, ArrayListSystem.Collections 네임스페이스에 있고, List<T>System.Collections.Generic 네임스페이스에 있습니다.

참고 항목

참조

ArrayList

System.Collections

List<T>

System.Collections.Generic

Array

기타 리소스

일반적으로 사용되는 컬렉션 형식