Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การตรวจสอบว่า Dictionary มีค่าเฉพาะหรือไม่ใน C#

ภาพรวม

เมธอด Dictionary<TKey, TValue>.ContainsValue(TValue) ตรวจสอบว่ามีค่า (value) ที่ระบุอยู่ในพจนานุกรมหรือไม่ คืน boolean

ตัวอย่างที่ 1: พบค่า "Kevin"

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Dictionary<string, string> dict = new Dictionary<string, string>();
        dict.Add("One", "John");
        dict.Add("Two", "Tom");
        dict.Add("Three", "Jacob");
        dict.Add("Four", "Kevin");
        dict.Add("Five", "Nathan");

        Console.WriteLine("Count of elements = " + dict.Count);
        Console.WriteLine("\nKey/value pairs...");
        foreach (KeyValuePair<string, string> res in dict)
        {
            Console.WriteLine("Key = {0}, Value = {1}", res.Key, res.Value);
        }

        if (dict.ContainsValue("Kevin"))
            Console.WriteLine("Value found!");
        else
            Console.WriteLine("Value isn't in the dictionary!");

        dict.Clear();
        Console.WriteLine("Cleared Key/value pairs...");
        foreach (KeyValuePair<string, string> res in dict)
        {
            Console.WriteLine("Key = {0}, Value = {1}", res.Key, res.Value);
        }
        Console.WriteLine("Count of elements now = " + dict.Count);
    }
}

ผลลัพธ์

Count of elements = 5
Key/value pairs...
Key = One, Value = John
Key = Two, Value = Tom
Key = Three, Value = Jacob
Key = Four, Value = Kevin
Key = Five, Value = Nathan
Value found!
Cleared Key/value pairs...
Count of elements now = 0

ตัวอย่างที่ 2: ไม่พบค่า "Angelina"

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Dictionary<string, string> dict = new Dictionary<string, string>();
        dict.Add("One", "Chris");
        dict.Add("Two", "Steve");
        dict.Add("Three", "Messi");
        dict.Add("Four", "Ryan");
        dict.Add("Five", "Nathan");

        Console.WriteLine("Count of elements = " + dict.Count);
        Console.WriteLine("\nKey/value pairs...");
        foreach (KeyValuePair<string, string> res in dict)
        {
            Console.WriteLine("Key = {0}, Value = {1}", res.Key, res.Value);
        }

        if (dict.ContainsValue("Angelina"))
            Console.WriteLine("Value found!");
        else
            Console.WriteLine("Value isn't in the dictionary!");

        dict.Clear();
        Console.WriteLine("Cleared Key/value pairs...");
        foreach (KeyValuePair<string, string> res in dict)
        {
            Console.WriteLine("Key = {0}, Value = {1}", res.Key, res.Value);
        }
        Console.WriteLine("Count of elements now = " + dict.Count);
    }
}

ผลลัพธ์

Count of elements = 5
Key/value pairs...
Key = One, Value = Chris
Key = Two, Value = Steve
Key = Three, Value = Messi
Key = Four, Value = Ryan
Key = Five, Value = Nathan
Value isn't in the dictionary!
Cleared Key/value pairs...
Count of elements now = 0

สรุป

  • ContainsValue ค้นหาแบบทีละค่า O(n) ช้ากว่า ContainsKey (O(1))
  • ใช้ Clear() ลบทุกคู่คีย์/ค่า
  • Dictionary ไม่อนุญาตคีย์ซ้ำ แต่ค่าสามารถซ้ำได้