C#에서 List<T>의 끝에 다른 컬렉션의 모든 요소를 한 번에 추가하려면 AddRange() 메서드를 사용하면 됩니다. 이 메서드는 배열이나 다른 컬렉션을 인수로 받아, 해당 컬렉션의 요소들을 기존 리스트의 맨 뒤에 순서대로 추가해 줍니다.
AddRange() 메서드란?
AddRange()는 System.Collections.Generic 네임스페이스의 List<T> 클래스가 제공하는 메서드로, IEnumerable<T>를 구현하는 모든 컬렉션(배열, List, HashSet 등)을 인수로 사용할 수 있습니다. 요소를 하나씩 Add()로 반복 호출하는 것보다 코드가 간결해지고, 내부적으로 리스트의 용량(capacity)을 효율적으로 관리하기 때문에 대량의 데이터를 추가할 때 성능 면에서도 유리합니다.
예제 1: 문자열 배열을 List에 추가하기
다음 예제는 문자열 배열을 List<string>의 끝에 추가하는 방법을 보여줍니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args){
List<string> list = new List<string>();
list.Add("Andy");
list.Add("Gary");
list.Add("Katie");
list.Add("Amy");
Console.WriteLine("List의 요소...");
foreach (string res in list){
Console.WriteLine(res);
}
string[] strArr = { "John", "Jacob" };
list.AddRange(strArr);
Console.WriteLine("List의 요소... 업데이트됨");
foreach(String str in list){
Console.WriteLine(str);
}
}
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
List의 요소... Andy Gary Katie Amy List의 요소... 업데이트됨 Andy Gary Katie Amy John Jacob
실행 결과를 보면 기존의 4개 요소 뒤에 배열에 있던 "John"과 "Jacob"이 그대로 이어져 추가된 것을 확인할 수 있습니다.
예제 2: 정수 배열을 List에 추가하기
문자열뿐만 아니라 숫자 타입에도 동일하게 적용할 수 있습니다. 이번에는 정수 배열을 List<int>의 끝에 추가해 보겠습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args){
List<int> list = new List<int>();
list.Add(25);
list.Add(50);
list.Add(75);
list.Add(100);
Console.WriteLine("List의 요소...");
foreach (int val in list){
Console.WriteLine(val);
}
int[] intArr = { 150, 200, 250, 300 };
list.AddRange(intArr);
Console.WriteLine("List의 요소... 업데이트됨");
foreach(int val in list){
Console.WriteLine(val);
}
}
}실행 결과
List의 요소... 25 50 75 100 List의 요소... 업데이트됨 25 50 75 100 150 200 250 300
정리
- AddRange()는 지정한 컬렉션의 모든 요소를 List의 끝에 한 번에 추가합니다.
- 배열뿐 아니라 IEnumerable<T>를 구현하는 모든 컬렉션(List, Queue, HashSet 등)을 사용할 수 있습니다.
- 인수로 null을 전달하면 ArgumentNullException이 발생하므로 주의해야 합니다.
여러 요소를 반복문 없이 간결하게 추가하고 싶다면 AddRange() 메서드를 적극적으로 활용해 보시기 바랍니다.