C# 배열(Array)과 컬렉션(Collection)의 차이점

2024. 9. 1. 16:47c#

C#에서 배열과 컬렉션의 차이점 및 사용 시나리오

C#에서는 데이터를 저장하고 관리하기 위한 다양한 방법이 있습니다.
그중에서도 배열컬렉션은 가장 기본적이고 널리 사용되는 데이터 구조입니다.
이 포스팅에서는 배열과 컬렉션의 차이점을 알아보고, 각각의 사용 시나리오를 설명하겠습니다.


1. 배열이란?

배열 개요

배열(Array)은 동일한 타입의 데이터를 연속된 메모리 공간에 저장하는 데이터 구조입니다.
배열은 고정된 크기를 가지며, 인덱스를 사용하여 요소에 접근할 수 있습니다.
배열은 C#에서 가장 기본적인 데이터 구조로, 간단한 데이터 저장 및 관리에 적합합니다.

배열 사용 예제

// 정수형 배열 선언 및 초기화
int[] numbers = new int[5] { 1, 2, 3, 4, 5 };

// 배열 요소 접근
int firstNumber = numbers[0];
Console.WriteLine($"첫 번째 숫자: {firstNumber}");

// 배열 요소 변경
numbers[1] = 10;

// 배열 전체 요소 출력
foreach (int number in numbers)
{
    Console.WriteLine(number);
}

배열의 주요 특징

  1. 고정 크기: 배열은 생성 시 크기가 고정되며, 이후에는 크기를 변경할 수 없습니다.
  2. 빠른 접근 속도: 배열은 인덱스를 사용하여 요소에 빠르게 접근할 수 있습니다.
  3. 동일한 타입의 요소 저장: 배열은 동일한 타입의 데이터를 저장하는 데 사용됩니다.

2. 컬렉션이란?

컬렉션 개요

컬렉션(Collection)은 배열과 달리 동적으로 크기가 조정될 수 있는 데이터 구조입니다.
C#에는 다양한 컬렉션 타입이 있으며, 대표적으로 List<T>, Dictionary<TKey, TValue>, HashSet<T> 등이 있습니다.
컬렉션은 배열보다 더 복잡한 데이터를 관리할 때 유용하며,
데이터의 추가, 삭제, 검색 등의 작업을 쉽게 수행할 수 있습니다.

List<T> 사용 예제

// 정수형 List 선언 및 초기화
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

// List 요소 추가
numbers.Add(6);

// List 요소 접근
int firstNumber = numbers[0];
Console.WriteLine($"첫 번째 숫자: {firstNumber}");

// List 요소 삭제
numbers.Remove(2);

// List 전체 요소 출력
foreach (int number in numbers)
{
    Console.WriteLine(number);
}

컬렉션의 주요 특징

  1. 동적 크기 조정: 컬렉션은 데이터가 추가되거나 삭제됨에 따라 크기가 자동으로 조정됩니다.
  2. 다양한 데이터 구조 제공: C#에는 List, Dictionary, HashSet 등 다양한 컬렉션이 있으며, 각각 특정 시나리오에 적합한 기능을 제공합니다.
  3. 유연한 데이터 관리: 컬렉션은 데이터를 보다 유연하게 관리할 수 있으며, 다양한 데이터 타입을 처리할 수 있습니다.

3. 배열과 컬렉션의 차이점

고정 크기 vs 동적 크기

  • 배열: 생성 시 크기가 고정되며, 이후에는 크기를 변경할 수 없습니다. 이는 메모리 사용을 예측 가능하게 하지만, 유연성이 떨어집니다.
  • 컬렉션: 데이터의 추가, 삭제에 따라 크기가 자동으로 조정되므로, 보다 유연한 데이터 관리가 가능합니다.

데이터 구조 및 기능

  • 배열: 단순한 데이터 구조로, 동일한 타입의 데이터를 연속적으로 저장합니다. 추가적인 기능이 없기 때문에 간단한 시나리오에 적합합니다.
  • 컬렉션: 더 복잡한 데이터 구조와 기능을 제공하며, 다양한 타입의 데이터를 효율적으로 관리할 수 있습니다. 예를 들어, List는 배열과 유사하지만 크기 조정이 가능하며, Dictionary는 키-값 쌍으로 데이터를 관리합니다.

사용 시나리오

  • 배열: 고정된 크기의 동일한 타입 데이터를 빠르게 처리해야 하는 경우에 유용합니다. 예를 들어, 1년 동안 매월의 평균 기온을 저장하는 경우 배열을 사용할 수 있습니다.
  • 컬렉션: 데이터의 크기가 가변적이거나, 데이터 추가, 삭제, 검색 등이 빈번한 경우에 적합합니다. 예를 들어, 사용자 목록을 관리하거나, 키-값 쌍으로 데이터를 저장해야 할 때 컬렉션을 사용하는 것이 좋습니다.

4. 사용 시나리오

배열을 사용하는 경우

  • 정해진 크기의 데이터 처리: 데이터의 크기가 변하지 않으며, 동일한 타입의 요소를 빠르게 처리해야 할 때 배열을 사용하는 것이 좋습니다.
  • 성능이 중요한 경우: 배열은 인덱스 접근 속도가 빠르기 때문에, 성능이 중요한 작업에 적합합니다.

컬렉션을 사용하는 경우

  • 동적 데이터 관리: 데이터의 크기가 가변적이거나, 데이터 추가/삭제가 빈번히 발생하는 경우 컬렉션을 사용하는 것이 적합합니다.
  • 다양한 기능 활용: 데이터를 효율적으로 검색, 정렬, 필터링 등 다양한 작업이 필요한 경우, List, Dictionary, HashSet 등의 컬렉션을 사용하는 것이 유리합니다.

C#에서 배열과 컬렉션은 각각의 장단점을 가지고 있으며, 사용 시나리오에 따라 적절한 선택이 필요합니다.
배열은 간단하고 성능이 중요한 작업에 유리하며, 컬렉션은 유연하고 복잡한 데이터 관리에 적합합니다.
이 포스팅을 통해 배열과 컬렉션의 차이점과 사용 시나리오를 이해하고, 상황에 맞게 적절히 사용할 수 있기를 바랍니다.

'c#' 카테고리의 다른 글

c# 클래스 선언 및 객체 생성  (0) 2024.09.11
c# 클래스와 객체의 개념  (0) 2024.09.10
C# Dictionary와 HashSet  (0) 2024.09.01
c# List와 ArrayList  (0) 2024.09.01
C# 배열(Array)과 컬렉션(Collection)  (0) 2024.09.01