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

C# Dictionary의 ContainsKey() 메서드 – 키 존재 여부 확인 방법

ContainsKey는 C#의 Dictionary<TKey, TValue> 클래스에서 제공하는 메서드로, 특정 키가 딕셔너리에 존재하는지 여부를 확인할 때 사용합니다. 반환값은 bool 타입으로, 키가 존재하면 true, 존재하지 않으면 false를 반환합니다.

딕셔너리 선언 및 요소 추가

먼저 Dictionary를 선언하고 요소를 추가하는 방법부터 살펴보겠습니다.

var dict = new Dictionary<string, int>() {
    {"TV", 1},
    {"Home Theatre", 2},
    {"Amazon Alexa", 3},
    {"Google Home", 5},
    {"Laptop", 5},
    {"Bluetooth Speaker", 6}
};

ContainsKey()로 키 존재 여부 확인하기

이제 딕셔너리에 특정 키가 존재하는지 확인해야 하는 상황을 가정해 보겠습니다. 이때 ContainsKey() 메서드를 활용하면 간단하게 처리할 수 있습니다.

if (dict.ContainsKey("Laptop") == true) {
    Console.WriteLine(dict["Laptop"]);
}

키가 존재하는 경우에만 해당 키의 값을 안전하게 조회할 수 있으므로, 존재하지 않는 키에 접근해 KeyNotFoundException이 발생하는 것을 예방할 수 있습니다.

전체 예제 코드

using System;
using System.Collections.Generic;
public class Demo {
    public static void Main() {
        var dict = new Dictionary<string, int>() {
            {"TV", 1},
            {"Home Theatre", 2},
            {"Amazon Alexa", 3},
            {"Google Home", 5},
            {"Laptop", 5},
            {"Bluetooth Speaker", 6}
        };
        if (dict.ContainsKey("Laptop") == true) {
            Console.WriteLine(dict["Laptop"]);
        }
        if (dict.ContainsKey("Amazon Alexa") == true) {
            Console.WriteLine(dict["Amazon Alexa"]);
        }
    }
}

실행 결과

5
3

알아두면 좋은 점

ContainsKey()는 내부적으로 해시 기반 조회를 수행하므로 평균적으로 O(1)의 시간 복잡도를 가집니다. 따라서 대량의 데이터에서도 빠르게 키 존재 여부를 판단할 수 있습니다.

또한, 키의 존재 여부와 값을 동시에 필요로 하는 경우에는 TryGetValue() 메서드를 사용하는 것이 더 효율적입니다. 이 메서드는 한 번의 조회로 존재 여부 확인과 값 가져오기를 모두 처리할 수 있습니다.