2024. 9. 1. 16:38ㆍc#
C#에서의 List와 ArrayList
C#에서 데이터를 저장하고 관리할 수 있는 다양한 컬렉션 타입이 있습니다.
그중에서도 List<T>와 ArrayList는 가장 많이 사용되는 컬렉션입니다.
이 두 가지 컬렉션은 비슷해 보이지만, 내부적으로는 중요한 차이점이 있습니다.
이번 포스팅에서는 List<T>와 ArrayList의 차이점, 장단점, 그리고 각각의 사용 방법을 알아보겠습니다.
1. List<T>란?
List<T> 개요
List<T>는 C#의 제네릭 컬렉션으로, 동일한 타입의 객체들을 동적으로 관리할 수 있는 데이터 구조입니다.
여기서 T는 리스트에 저장될 데이터 타입을 의미합니다.
List<T>는 강력한 타입 안정성을 제공하며, 다양한 메서드를 통해 요소의 추가, 삭제, 검색 등을 할 수 있습니다.
List<T> 사용 예제
List<T>를 사용하여 정수 리스트를 관리하는 예제를 보겠습니다.
// List<int> 선언 및 초기화
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
// 요소 추가
numbers.Add(6);
// 요소 접근
int firstNumber = numbers[0];
Console.WriteLine($"첫 번째 숫자: {firstNumber}");
// 요소 삭제
numbers.Remove(3);
// 전체 요소 출력
foreach (int number in numbers)
{
Console.WriteLine(number);
}
List<T>의 장점
- 타입 안전성: List<T>는 제네릭 타입을 사용하기 때문에 컴파일 타임에 타입 오류를 방지할 수 있습니다.
- 성능: 내부적으로 배열을 사용하지만, 크기가 동적으로 조절되기 때문에 메모리 사용이 효율적입니다.
- 유연성: 다양한 타입의 데이터를 저장할 수 있으며, 배열보다 더 많은 기능을 제공합니다.
2. ArrayList란?
ArrayList 개요
ArrayList는 C#의 비제네릭 컬렉션으로, 다양한 타입의 객체들을 동적으로 관리할 수 있는 데이터 구조입니다.
ArrayList는 제네릭이 도입되기 이전부터 사용된 컬렉션으로, 배열과 유사하지만 크기가 동적으로 조절됩니다.
그러나 ArrayList는 타입 안전성을 제공하지 않기 때문에 컴파일 타임에 타입 오류를 방지할 수 없습니다.
ArrayList 사용 예제
ArrayList를 사용하여 다양한 타입의 데이터를 관리하는 예제를 보겠습니다.
// ArrayList 선언 및 초기화
ArrayList arrayList = new ArrayList { 1, "Hello", true };
// 요소 추가
arrayList.Add(4.5);
// 요소 접근
int firstElement = (int)arrayList[0];
Console.WriteLine($"첫 번째 요소: {firstElement}");
// 요소 삭제
arrayList.Remove("Hello");
// 전체 요소 출력
foreach (var item in arrayList)
{
Console.WriteLine(item);
}
ArrayList의 장점
- 다양한 타입 저장 가능: ArrayList는 어떤 타입의 객체든 저장할 수 있습니다.
- 동적 크기 조정: 배열과 달리 ArrayList는 크기가 자동으로 조절되므로 데이터를 추가하거나 삭제할 때 편리합니다.
3. List<T>와 ArrayList의 차이점
타입 안전성
- List<T>: 제네릭 컬렉션이기 때문에 컴파일 타임에 타입 체크가 이루어지며, 타입 안전성을 보장합니다.
- ArrayList: 비제네릭 컬렉션으로, 다양한 타입의 객체를 저장할 수 있지만, 요소를 사용할 때는 타입 캐스팅이 필요하며, 런타임에 타입 오류가 발생할 수 있습니다.
성능
- List<T>: 제네릭 컬렉션으로, 타입 캐스팅이 필요하지 않아 성능이 더 우수합니다.
- ArrayList: 비제네릭 컬렉션이므로, 타입 캐스팅이 필요할 때 성능이 저하될 수 있습니다.
사용 시기
- List<T>: 타입이 고정된 데이터를 다루고, 성능과 타입 안전성이 중요한 경우 사용합니다.
- ArrayList: 다양한 타입의 데이터를 동적으로 저장해야 하지만, 제네릭 컬렉션을 사용할 수 없는 경우에 사용합니다. 다만, 현재는 List<T>가 더 많이 사용되며, ArrayList는 이전 코드의 호환성 유지 목적으로만 사용되는 경우가 많습니다.
C#에서 데이터를 저장하고 관리할 때, List<T>와 ArrayList는 중요한 역할을 합니다.
하지만 제네릭 컬렉션인 List<T>는 타입 안전성과 성능 면에서 더 많은 이점을 제공합니다.
반면, ArrayList는 유연성을 제공하지만, 타입 캐스팅으로 인한 런타임 오류 가능성과 성능 저하의 단점이 있습니다.
따라서 새로운 개발 작업에서는 가능한 한 List<T>를 사용하는 것이 권장됩니다.
이 포스팅에서는 List<T>와 ArrayList의 차이점과 각각의 사용 사례를 살펴보았습니다.
이들을 적절히 활용하면 더 안전하고 효율적인 코드를 작성할 수 있을 것입니다.
'c#' 카테고리의 다른 글
C# 배열(Array)과 컬렉션(Collection)의 차이점 (4) | 2024.09.01 |
---|---|
C# Dictionary와 HashSet (0) | 2024.09.01 |
C# 배열(Array)과 컬렉션(Collection) (0) | 2024.09.01 |
c# 오버로딩과 오버라이딩 (0) | 2024.08.31 |
c# 메서드와 함수 (0) | 2024.08.31 |