Array vs List
배열 ( Array )과 리스트 ( List )는 모두 여러 데이터를 한번에 저장하는 자료구조이지만
크기 변경 가능 여부 , 메모리 관리 방식 , 성능 및 유연성에서 중요한 차이가 있다.
| 항목 | 배열 ( Array ) | 리스트 ( List ) |
| 기본 형태 | 고정 크기 자료구조 | 동적 크기 자료구조 |
| 네임 스페이스 | System | System.Collections.Generic |
| 선언 예시 | int[ ] arr = new int[3]; | List<int> list = new List<int>( ); |
| 크기 변경 | 불가능 ( 고정 ) | 가능 ( 자동 확장 ) |
| 내부 구조 | 연속된 메모리 블록 | 내부적으로 배열 사용. 필요시 자동 확장 |
| 인덱스 접근 | 지원 ( arr [ i ] ) | 지원 ( list [ i ] ) |
문법
▼Array
int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
▼List
List<int> numbersList = new List<int>();
numbersList.Add(10);
numbersList.Add(20);
numbersList.Add(30);
주요 메서드 및 특징
| 기능 | 배열 ( Array ) | 리스트 ( List ) |
| 요소 추가 | 직접 인덱스 지정 | Add( ) , AddRange( ) |
| 요소 제거 | 불가능 ( 새 배열 생성 필요 ) | Remove( ) , RemoveAt( ) , Clear( ) |
| 크기 확인 | Length | Count |
| 정렬 | Array.Sort( ) | list.Sort( ) |
| 검색 | Array.IndexOf( ) | list.Contains( ) , list.Find( ) |
주의할 점
- Array 는 크기 변경 불가 , 재할당 시 새 배열을 생성해야 한다.
- List 는 내부적으로 배열을 감싸는 클래스라서, 너무 자주 추가 / 삭제시 약간의 오버헤드가 발생한다.
- List<T> 는 제네릭 타입이라 형변환이 불필요하지만, ArrayList 는 비제네릭이라 형변환이 필요하다. ( C# 2.0 이전 )
- 대량 데이터에서 최대 성능이 필요하면 Array, 유연성이 필요하면 List<T> 사용이 일반적이다.
정리
- Array → 빠르고 단순하지만 크기가 고정
- List<T> → 크기 가변 , 다양한 기능 제공 , 코드가 간결해진다.
'⭐C Sharp > 15-2. 배열' 카테고리의 다른 글
| 배열 ( Array ) (0) | 2025.10.08 |
|---|---|
| 배열 속 객체들의 정보를 출력하는 함수 (0) | 2025.09.08 |
| 문자열 ( String ) (0) | 2025.09.07 |