C#의 SortedDictionary.Keys 속성은 SortedDictionary<TKey, TValue>에 저장된 모든 키(key)를 담고 있는 컬렉션을 가져오는 데 사용됩니다. 이 속성을 활용하면 정렬된 사전 구조에서 키만 별도로 순회하거나 조회할 수 있습니다.
문법(Syntax)
Keys 속성의 기본 문법은 다음과 같습니다.
public System.Collections.Generic.SortedDictionary<TKey,TValue>.KeyCollection Keys { get; }예제 1: 키 컬렉션 가져오기
다음 예제는 SortedDictionary에 요소를 추가하고, Keys 속성을 통해 전체 키를 출력하는 방법을 보여줍니다.
using System;
using System.Collections;
using System.Collections.Generic;
public class Demo {
public static void Main(){
SortedDictionary<int, string> sortedDict = new SortedDictionary<int, string>();
sortedDict.Add(1, "SUV");
sortedDict.Add(2, "MUV");
sortedDict.Add(3, "Utility Vehicle");
sortedDict.Add(4, "AUV");
sortedDict.Add(5, "Hatchback");
sortedDict.Add(6, "Convertible");
Console.WriteLine("SortedDictionary key-value pairs...");
IDictionaryEnumerator demoEnum = sortedDict.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
Console.WriteLine("Count of SortedDictionary key-value pairs = "+sortedDict.Count);
sortedDict.Add(7, "Seven");
sortedDict.Add(8, "Eight");
Console.WriteLine("\nSortedDictionary key-value pairs...UPDATED");
demoEnum = sortedDict.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
Console.WriteLine("Count of SortedDictionary key-value pairs (UPDATED) = "+sortedDict.Count);
Console.WriteLine("Value in the SortedDictionary key-value pair key five = "+sortedDict[5]);
sortedDict[5] = "Crossover";
Console.WriteLine("Value in the SortedDictionary key-value pair key five (updated) = "+sortedDict[5]);
SortedDictionary<int, string>.KeyCollection keyColl = sortedDict.Keys;
Console.WriteLine("\nKeys...");
foreach( int i in keyColl ){
Console.WriteLine(i);
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
SortedDictionary key-value pairs... Key = 1, Value = SUV Key = 2, Value = MUV Key = 3, Value = Utility Vehicle Key = 4, Value = AUV Key = 5, Value = Hatchback Key = 6, Value = Convertible Count of SortedDictionary key-value pairs = 6 SortedDictionary key-value pairs...UPDATED Key = 1, Value = SUV Key = 2, Value = MUV Key = 3, Value = Utility Vehicle Key = 4, Value = AUV Key = 5, Value = Hatchback Key = 6, Value = Convertible Key = 7, Value = Seven Key = 8, Value = Eight Count of SortedDictionary key-value pairs (UPDATED) = 8 Value in the SortedDictionary key-value pair key five = Hatchback Value in the SortedDictionary key-value pair key five (updated) = Crossover Keys... 1 2 3 4 5 6 7 8
출력 결과에서 확인할 수 있듯이, Keys 속성은 SortedDictionary에 저장된 키들을 항상 정렬된 순서로 반환합니다. 이것이 일반 Dictionary와의 가장 큰 차이점입니다.
예제 2: ContainsKey와 함께 사용하기
이번에는 특정 키의 존재 여부를 확인하는 ContainsKey 메서드와 Keys 속성을 함께 활용한 예제입니다.
using System;
using System.Collections;
using System.Collections.Generic;
public class Demo {
public static void Main(){
SortedDictionary<int, string> sortedDict = new SortedDictionary<int, string>();
sortedDict.Add(100, "Mobile");
sortedDict.Add(200, "Laptop");
sortedDict.Add(300, "Desktop");
sortedDict.Add(400, "Speakers");
sortedDict.Add(500, "Headphone");
sortedDict.Add(600, "Earphone");
Console.WriteLine("SortedDictionary key-value pairs...");
IDictionaryEnumerator demoEnum = sortedDict.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
Console.WriteLine("\nThe SortedDictionary has the key 200? = "+sortedDict.ContainsKey(200));
SortedDictionary<int, string>.KeyCollection keyColl = sortedDict.Keys;
Console.WriteLine("\nKeys...");
foreach( int i in keyColl ){
Console.WriteLine(i);
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
SortedDictionary key-value pairs... Key = 100, Value = Mobile Key = 200, Value = Laptop Key = 300, Value = Desktop Key = 400, Value = Speakers Key = 500, Value = Headphone Key = 600, Value = Earphone The SortedDictionary has the key 200? = True Keys... 100 200 300 400 500 600
핵심 정리
- Keys 속성은 SortedDictionary의 모든 키를 KeyCollection 타입으로 반환합니다.
- 반환된 키 컬렉션은 키 값 기준으로 자동 정렬되어 있습니다.
- foreach 문을 사용해 키 컬렉션을 간편하게 순회할 수 있습니다.
- ContainsKey 메서드와 조합하면 키 존재 여부 확인 후 안전하게 데이터를 처리할 수 있습니다.