C#의 SortedList 컬렉션은 키(key)를 기준으로 자동 정렬되는 키-값 쌍을 저장하는 자료구조입니다. 이때 특정 위치(인덱스)에 저장된 값을 가져오고 싶다면 GetByIndex() 메서드를 사용하면 됩니다.
GetByIndex() 메서드란?
GetByIndex(int index)는 SortedList 내부에서 해당 인덱스에 위치한 값(Value)을 반환합니다. 주의할 점은 인덱스가 키의 정렬 순서를 기준으로 매겨진다는 것입니다. 즉, 요소를 추가한 순서가 아니라 키가 정렬된 순서대로 인덱스가 결정됩니다.
예제 1: 문자열 키를 사용하는 경우
아래 예제에서는 문자열 키로 요소를 추가한 후, 여러 인덱스의 값을 조회해 봅니다.
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args) {
SortedList list = new SortedList();
list.Add("A", "Jacob");
list.Add("B", "Sam");
list.Add("C", "Tom");
list.Add("D", "John");
list.Add("E", "Tim");
list.Add("F", "Mark");
list.Add("G", "Gary");
Console.WriteLine("인덱스 2의 값 = " + list.GetByIndex(2));
Console.WriteLine("인덱스 5의 값 = " + list.GetByIndex(5));
Console.WriteLine("인덱스 6의 값 = " + list.GetByIndex(6));
}
}실행 결과
인덱스 2의 값 = Tom 인덱스 5의 값 = Mark 인덱스 6의 값 = Gary
키 "A"부터 "G"까지 알파벳 순으로 정렬되어 있으므로, 인덱스 2에는 세 번째 키인 "C"에 해당하는 값 "Tom"이 반환됩니다.
예제 2: 숫자 키를 사용하는 경우
이번에는 정수형 키를 사용해 보겠습니다.
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args) {
SortedList list = new SortedList();
list.Add(1, "One");
list.Add(2, "Two");
list.Add(3, "Three");
list.Add(4, "Four");
list.Add(5, "Five");
Console.WriteLine("인덱스 0의 값 = " + list.GetByIndex(0));
}
}실행 결과
인덱스 0의 값 = One
숫자 키 역시 오름차순으로 정렬되므로, 인덱스 0은 첫 번째 키인 1에 대응하는 값 "One"을 반환합니다.
참고 사항
- GetKey(int index): 지정된 인덱스의 키를 가져올 때 사용합니다.
- IndexOfKey / IndexOfValue: 키나 값으로부터 해당 인덱스를 역으로 찾을 수 있습니다.
- 유효 범위를 벗어난 인덱스를 전달하면 ArgumentOutOfRangeException이 발생하므로, 사용 전
Count속성으로 크기를 확인하는 것이 안전합니다.
이처럼 GetByIndex() 메서드를 활용하면 SortedList에서 정렬 순서 기반으로 손쉽게 값을 조회할 수 있습니다.