C#에서 ArrayList의 특정 범위에 컬렉션 요소 복사하기
C#에서 ArrayList의 지정된 인덱스 위치부터 시작하는 요소 범위 위에 다른 컬렉션의 요소를 복사하려면 SetRange() 메서드를 사용하면 됩니다.
SetRange() 메서드의 기본 구문은 다음과 같습니다.
arrList.SetRange(int index, ICollection c);
- index: 복사가 시작될 ArrayList의 인덱스(0부터 시작)
- c: 해당 범위에 덮어쓸 요소들을 가진 컬렉션(ICollection)
복사 대상 컬렉션이 기존 범위보다 크면 ArrayList는 필요에 따라 자동으로 확장되며, 기존 요소들은 시작 인덱스부터 순서대로 새 값으로 덮어써집니다.
예제 1
다음 예제는 ArrayList의 인덱스 0 위치부터 문자열 배열의 요소를 복사하는 코드입니다.
using System;
using System.Collections;
public class Demo {
public static void Main(){
ArrayList arrList = new ArrayList();
arrList.Add("A");
arrList.Add("B");
arrList.Add("C");
arrList.Add("D");
Console.WriteLine("ArrayList 요소...");
for (int i = 0; i < arrList.Count; i++) {
Console.WriteLine("" + arrList[i]);
}
string[] str = { "Demo", "Text" };
arrList.SetRange(0, str);
Console.WriteLine("복사 후...");
for (int i = 0; i < arrList.Count; i++) {
Console.WriteLine("" + arrList[i]);
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
ArrayList 요소... A B C D 복사 후... Demo Text C D
인덱스 0부터 "A", "B" 두 개의 요소가 배열의 "Demo", "Text"로 덮어써지고, 나머지 "C", "D"는 그대로 유지된 것을 확인할 수 있습니다.
예제 2
이번에는 시작 인덱스를 2로 지정하여 중간 위치부터 요소를 복사하는 예제입니다.
using System;
using System.Collections;
public class Demo {
public static void Main(){
ArrayList arrList = new ArrayList();
arrList.Add("One");
arrList.Add("Two");
arrList.Add("Three");
arrList.Add("Four");
arrList.Add("Five");
arrList.Add("Six");
arrList.Add("Seven");
arrList.Add("Eight");
Console.WriteLine("ArrayList 요소...");
for (int i = 0; i < arrList.Count; i++) {
Console.WriteLine("" + arrList[i]);
}
string[] str = { "Demo", "Text" };
arrList.SetRange(2, str);
Console.WriteLine("복사 후...");
for (int i = 0; i < arrList.Count; i++) {
Console.WriteLine("" + arrList[i]);
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
ArrayList 요소... One Two Three Four Five Six Seven Eight 복사 후... One Two Demo Text Five Six Seven Eight
인덱스 2부터 두 개의 요소인 "Three", "Four"가 각각 "Demo", "Text"로 교체되었습니다. 이처럼 SetRange() 메서드를 활용하면 ArrayList의 원하는 위치에 다른 컬렉션의 데이터를 손쉽게 덮어쓸 수 있습니다.