c# List와 ArrayList

2024. 9. 1. 16:38c#

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>의 장점

  1. 타입 안전성: List<T>는 제네릭 타입을 사용하기 때문에 컴파일 타임에 타입 오류를 방지할 수 있습니다.
  2. 성능: 내부적으로 배열을 사용하지만, 크기가 동적으로 조절되기 때문에 메모리 사용이 효율적입니다.
  3. 유연성: 다양한 타입의 데이터를 저장할 수 있으며, 배열보다 더 많은 기능을 제공합니다.

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의 장점

  1. 다양한 타입 저장 가능: ArrayList는 어떤 타입의 객체든 저장할 수 있습니다.
  2. 동적 크기 조정: 배열과 달리 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