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

C# SortedList에서 IndexOfKey()로 지정된 키의 인덱스 가져오기

C#의 SortedList 개체에서 특정 키가 몇 번째 위치에 있는지 확인해야 하는 경우가 종종 있습니다. 이럴 때 IndexOfKey() 메서드를 사용하면 간단히 해결할 수 있습니다. 이 메서드는 지정된 키의 인덱스(0부터 시작)를 반환하며, 해당 키가 SortedList에 존재하지 않으면 -1을 반환합니다.

예제 1

다음은 SortedList 개체에서 지정된 키의 인덱스를 가져오는 기본 예제입니다 −

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"));
    }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −

SortedList elements...
Five Operations
Four Purchase
One Finance
Six IT
Three Sales
Two Marketing
Index at key One = 2

여기서 주목할 점은 SortedList가 키를 기준으로 자동 오름차순 정렬된다는 것입니다. 요소를 추가한 순서와 관계없이 Five, Four, One, Six, Three, Two 순으로 정렬되며, 키 "One"은 세 번째 위치이므로 인덱스 2가 반환됩니다.

예제 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);
        }
        Console.Write("Index at key Five = "+list1.IndexOfKey("Five"));
        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("\n\nSortedList2 elements...");
        foreach(DictionaryEntry d in list2) {
            Console.WriteLine(d.Key + " " + d.Value);
        }
        Console.Write("Index at key B = "+list2.IndexOfKey("B"));
    }
}

출력 결과

실행 결과는 다음과 같습니다 −

SortedList1 elements...
Eight 8
Five 5
Four 4
Nine 9
One 1
Seven 7
Six 6
Ten 10
Three 3
Two 2
Index at key Five = 1

SortedList2 elements...
A Accessories
B Books
C Smart Wearable Tech
D Home Appliances
Index at key B = 1

첫 번째 목록에서는 열 개의 키가 알파벳순으로 정렬되어 Eight가 인덱스 0, Five가 인덱스 1에 위치하므로 IndexOfKey("Five")는 1을 반환합니다. 두 번째 목록도 같은 원리로 키 B의 인덱스 1이 출력됩니다. 참고로 존재하지 않는 키를 조회하면 -1이 반환되므로, 이 반환값을 활용하면 특정 키의 존재 여부를 확인하는 용도로도 사용할 수 있습니다.