Java에는 정렬된 키-값 쌍을 다루는 SortedMap 인터페이스가 존재합니다. C#에서는 이와 동일한 역할을 하는 컬렉션으로 SortedList를 제공합니다.
SortedList란 무엇인가?
C#의 SortedList 컬렉션은 키(Key)와 인덱스(Index) 두 가지 방식으로 목록 내 항목에 접근할 수 있다는 점이 특징입니다.
SortedList는 본질적으로 배열(Array)과 해시 테이블(Hashtable)의 결합 형태라고 볼 수 있습니다. 즉, 하나의 항목 목록을 키 또는 인덱스 어느 쪽으로든 접근할 수 있도록 지원합니다.
- 인덱스로 접근하는 경우 → ArrayList처럼 동작합니다.
- 키로 접근하는 경우 → Hashtable처럼 동작합니다.
또한 SortedList에 저장된 항목들은 항상 키 값을 기준으로 자동 정렬되어 유지됩니다. 이 덕분에 정렬 상태가 보장되어야 하는 데이터를 다룰 때 매우 유용합니다.
SortedList 사용 예제
아래 예제는 SortedList에 항목을 추가한 뒤, 저장된 키들을 화면에 출력하는 코드입니다.
using System;
using System.Collections;
namespace Demo {
class Program {
static void Main(string[] args) {
SortedList sl = new SortedList();
sl.Add("ST0", "One");
sl.Add("ST1", "Two");
sl.Add("ST2", "Three");
ICollection key = sl.Keys;
foreach(string k in key) {
Console.WriteLine(k);
}
}
}
}실행 결과
키가 삽입 순서와 관계없이 항상 오름차순으로 정렬되어 출력되는 것을 확인할 수 있습니다.
ST0 ST1 ST2
정리
Java 개발자가 C#으로 전환할 때 SortedMap 대신 SortedList를 사용하면 됩니다. 키 기반 정렬과 인덱스 기반 접근을 동시에 지원하는 SortedList는 정렬된 데이터 구조가 필요한 상황에서 실용적인 선택지가 됩니다.