C#에서 SortedList 개체에 저장된 모든 키를 가져오려면 Keys 속성을 사용하면 됩니다. 이 속성은 SortedList에 포함된 키들을 ICollection 형태로 반환하며, foreach 루프를 통해 각 키를 손쉽게 순회할 수 있습니다.
SortedList.Keys 속성이란?
SortedList는 키를 기준으로 항상 자동 정렬되는 컬렉션입니다. 따라서 Keys 속성으로 반환되는 키 컬렉션 역시 정렬된 순서 그대로 제공됩니다. 아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.
예제 1
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args) {
SortedList list = new SortedList();
list.Add("One", "Finance");
list.Add("Two", "Marketing");
list.Add("Three", "Sales");
list.Add("Four", "Purchase");
list.Add("Five", "Operations");
list.Add("Six", "IT");
Console.WriteLine("SortedList elements...");
foreach(DictionaryEntry d in list) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("\nIndex at key One = "+list.IndexOfKey("One"));
ICollection col = list.Keys;
Console.WriteLine("\nCollection of Keys...");
foreach(string res in col)
Console.WriteLine(res);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
SortedList elements... Five Operations Four Purchase One Finance Six IT Three Sales Two Marketing Index at key One = 2 Collection of Keys... Five Four One Six Three Two
코드 설명
Add() 메서드로 키와 값을 추가한 뒤, IndexOfKey() 메서드를 사용하면 특정 키가 위치한 인덱스를 알 수 있습니다. 위 예제에서는 키 "One"이 정렬된 목록에서 인덱스 2번째에 위치함을 확인했습니다. 이후 list.Keys 속성으로 키 컬렉션을 가져와 foreach 문으로 하나씩 출력했습니다.
예제 2
이번에는 두 개의 SortedList에서 각각 키 컬렉션을 가져오는 예제를 살펴보겠습니다.
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args) {
SortedList list1 = new SortedList();
list1.Add("One", 1);
list1.Add("Two ", 2);
list1.Add("Three ", 3);
list1.Add("Four", 4);
list1.Add("Five", 5);
list1.Add("Six", 6);
list1.Add("Seven ", 7);
list1.Add("Eight ", 8);
list1.Add("Nine", 9);
list1.Add("Ten", 10);
Console.WriteLine("SortedList1 elements...");
foreach(DictionaryEntry d in list1) {
Console.WriteLine(d.Key + " " + d.Value);
}
ICollection col = list1.Keys;
Console.WriteLine("\nCollection of Keys in List1...");
foreach(string res in col)
Console.WriteLine(res);
SortedList list2 = new SortedList();
list2.Add("A", "Accessories");
list2.Add("B", "Books");
list2.Add("C", "Smart Wearable Tech");
list2.Add("D", "Home Appliances");
Console.WriteLine("\nSortedList2 elements...");
foreach(DictionaryEntry d in list2) {
Console.WriteLine(d.Key + " " + d.Value);
}
col = list2.Keys;
Console.WriteLine("\nCollection of Keys in List2...");
foreach(string res in col)
Console.WriteLine(res);
}
}출력 결과
실행 결과는 다음과 같습니다.
SortedList1 elements... Eight 8 Five 5 Four 4 Nine 9 One 1 Seven 7 Six 6 Ten 10 Three 3 Two 2 Collection of Keys in List1... Eight Five Four Nine One Seven Six Ten Three Two SortedList2 elements... A Accessories B Books C Smart Wearable Tech D Home Appliances Collection of Keys in List2... A B C D
정리
SortedList의 키만 필요할 때는 별도의 반복 처리 없이 Keys 속성 하나로 간단하게 해결할 수 있습니다. 반환된 ICollection은 읽기 전용 스냅샷처럼 활용할 수 있으며, 값만 필요한 경우에는 Values 속성을 사용하면 됩니다. 키와 값을 함께 다뤄야 한다면 DictionaryEntry를 이용한 foreach 순회가 가장 효율적입니다.