인덱스로 액세스할 수 있는 강력한 형식의 개체 목록을 나타냅니다. 목록의 검색, 정렬 및 조작에 사용할 수 있는 메서드를 제공합니다.

 

List<(Of <(T>)>) 클래스는 ArrayList 클래스의 제네릭 형태에 해당합니다. 이 클래스는 필요에 따라 크기가 동적으로 증가하는 배열을 사용하여 IList<(Of <(T>)>) 제네릭 인터페이스를 구현합니다.

List<(Of <(T>)>) 클래스는 같음 비교자와 순서 비교자를 모두 사용합니다.

  • Contains, IndexOf, LastIndexOfRemove와 같은 메서드는 목록 요소에 대해 같음 비교자를 사용합니다. T 형식의 기본 같음 비교자는 다음과 같이 결정됩니다. T 형식이 IEquatable<(Of <(T>)>) 제네릭 인터페이스를 구현하면 같음 비교자가 해당 인터페이스의 Equals(T) 메서드이고, 그렇지 않으면 기본 같음 비교자가 Object..::.Equals(Object)입니다.

  • BinarySearchSort와 같은 메서드는 목록 요소에 대해 순서 비교자를 사용합니다. T 형식의 기본 비교자는 다음과 같이 결정됩니다. T 형식이 IComparable<(Of <(T>)>) 제네릭 인터페이스를 구현하면 기본 비교자가 해당 인터페이스의 CompareTo(T) 메서드이고, T 형식이 제네릭이 아닌 IComparable 인터페이스를 구현하면 기본 비교자가 해당 인터페이스의 CompareTo(Object) 메서드입니다. T 형식이 두 인터페이스 중 하나를 구현하지 않으면 기본 비교자가 없으므로 비교자나 비교 대리자가 명시적으로 제공되어야 합니다

 

성능 고려 사항

비슷한 기능을 가진 List<(Of <(T>)>) 클래스와 ArrayList 클래스 중에서 사용할 것을 결정할 때 List<(Of <(T>)>) 클래스가 대부분의 경우 성능이 좋으며 형식이 안전한 것을 고려합니다. 참조 형식이 List<(Of <(T>)>) 클래스의 T 형식에 사용되는 경우 두 클래스의 동작은 동일합니다. 그러나 값 형식이 T 형식에 사용되는 경우에는 구현과 boxing 문제를 고려해야 합니다.

값 형식이 T 형식에 사용되는 경우에는 컴파일러에서 해당 값 형식에 특정한 List<(Of <(T>)>) 클래스의 구현을 생성합니다. 즉, List<(Of <(T>)>) 개체의 목록 요소를 boxing하지 않아도 요소를 사용할 수 있으며, 500개 정도의 목록 요소가 만들어진 후 boxing하지 않는 목록 요소를 저장한 메모리가 클래스 구현을 생성하는 데 사용된 메모리보다 큽니다.

+ Recent posts