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

วิธีเพิ่มคีย์/ค่าใน SortedList ใน C#

SortedList (ใน System.Collections) เป็นคอลเลกชันคีย์-ค่าที่จัดเก็บเรียงลำดับตามคีย์ ใช้เมธอด Add(key, value) เพิ่มข้อมูล คีย์ต้องไม่ซ้ำกัน

ตัวอย่างโค้ดที่ 1: เพิ่มข้อมูลและดู Keys/Values

using System;
using System.Collections;

public class Demo
{
    public static void Main(string[] args)
    {
        SortedList list = new SortedList();
        list.Add("A", "Jacob");
        list.Add("B", "Sam");
        list.Add("C", "Tom");
        list.Add("D", "John");
        list.Add("E", "Tim");
        list.Add("F", "Mark");
        list.Add("G", "Gary");
        list.Add("H", "Nathan");
        list.Add("I", "Shaun");
        list.Add("J", "David");

        ICollection col1 = list.Values;
        Console.WriteLine("Values...");
        foreach (string s in col1)
            Console.WriteLine(s);

        ICollection col2 = list.Keys;
        Console.WriteLine("\nKeys...");
        foreach (string s in col2)
            Console.WriteLine(s);
    }
}

ผลลัพธ์

Values...
Jacob
Sam
Tom
John
Tim
Mark
Gary
Nathan
Shaun
David
Keys...
A
B
C
D
E
F
G
H
I
J

ตัวอย่างโค้ดที่ 2: ลบด้วย RemoveAt และวนลูปด้วย Enumerator

using System;
using System.Collections;

public class Demo
{
    public static void Main(string[] args)
    {
        SortedList sortedList = new SortedList();
        sortedList.Add("A", "1");
        sortedList.Add("B", "2");
        sortedList.Add("C", "3");
        sortedList.Add("D", "4");
        sortedList.Add("E", "5");
        sortedList.Add("F", "6");
        sortedList.Add("G", "7");
        sortedList.Add("H", "8");
        sortedList.Add("I", "9");
        sortedList.Add("J", "10");

        Console.WriteLine("SortedList elements...");
        foreach (DictionaryEntry d in sortedList)
        {
            Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
        }

        Console.WriteLine("Count of SortedList key-value pairs = " + sortedList.Count);
        sortedList.RemoveAt(3); // ลบ index 3 (คีย์ D)

        Console.WriteLine("\nEnumerator to iterate through the SortedList...");
        IDictionaryEnumerator demoEnum = sortedList.GetEnumerator();
        while (demoEnum.MoveNext())
            Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);

        Console.WriteLine("Count of SortedList key-value pairs (Updated) = " + sortedList.Count);
    }
}

ผลลัพธ์

SortedList elements...
Key = A, Value = 1
Key = B, Value = 2
Key = C, Value = 3
Key = D, Value = 4
Key = E, Value = 5
Key = F, Value = 6
Key = G, Value = 7
Key = H, Value = 8
Key = I, Value = 9
Key = J, Value = 10
Count of SortedList key-value pairs = 10
Enumerator to iterate through the SortedList...
Key = A, Value = 1
Key = B, Value = 2
Key = C, Value = 3
Key = E, Value = 5
Key = F, Value = 6
Key = G, Value = 7
Key = H, Value = 8
Key = I, Value = 9
Key = J, Value = 10
Count of SortedList key-value pairs (Updated) = 9

เมธอดและ Property สำคัญของ SortedList

Memberคำอธิบาย
Add(key, value)เพิ่มคีย์-ค่า (โยน exception หากคีย์ซ้ำ)
Remove(key)ลบตามคีย์
RemoveAt(index)ลบตามดัชนี (0-based ตามลำดับคีย์)
Clear()ลบทั้งหมด
ContainsKey(key) / ContainsValue(value)ตรวจสอบความมีอยู่
IndexOfKey(key) / IndexOfValue(value)หาดัชนี (-1 หากไม่พบ)
Keys / ValuesICollection ของคีย์/ค่า
GetKeyList() / GetValueList()IList ที่เข้าถึงแบบ index ได้
Countจำนวนรายการ
Item[key] (indexer)ได้/ตั้งค่า ด้วยคีย์

Generic Version: SortedList<TKey, TValue>

ในโค้ดใหม่ ควรใช้ System.Collections.Generic.SortedList<TKey, TValue> ซึ่งมี type safety และประสิทธิภาพดีกว่า

var sortedList = new SortedList();
sortedList.Add("A", 1);
sortedList.Add("B", 2);
// ...