Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# SortedList에서 키(Key) 컬렉션 가져오는 방법

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 순회가 가장 효율적입니다.