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

วิธีหาดัชนีของค่าที่ระบุใน SortedList ใน C#

บทความนี้สาธิตวิธีการหาดัชนี (index) ของค่า (value) ที่ระบุใน SortedList โดยใช้ method IndexOfValue

ตัวอย่างที่ 1: หาดัชนีของค่าตัวเลขและสตริง

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 value 7 = " + list1.IndexOfValue(7));

        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 value Books = " + list2.IndexOfValue("Books"));
    }
}

ผลลัพธ์

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

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

ตัวอย่างที่ 2: หาดัชนีของหลายค่า

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 value Marketing = " + list.IndexOfValue("Marketing"));
        Console.WriteLine("Index at value Purchase = " + list.IndexOfValue("Purchase"));
        Console.WriteLine("Index at value Sales = " + list.IndexOfValue("Sales"));
        Console.WriteLine("Index at value IT = " + list.IndexOfValue("IT"));
        Console.WriteLine("Index at value Operations = " + list.IndexOfValue("Operations"));
    }
}

ผลลัพธ์

SortedList elements...
Five Operations
Four Purchase
One Finance
Six IT
Three Sales
Two Marketing
Index at value Marketing = 5
Index at value Purchase = 1
Index at value Sales = 4
Index at value IT = 3
Index at value Operations = 0

คำอธิบายเพิ่มเติม

  • IndexOfValue(value) คืนดัชนี 0-based ของค่าที่พบครั้งแรกใน sorted order (เรียงตามคีย์)
  • คืนค่า -1 ถ้าค่าไม่มีอยู่ใน SortedList
  • ใช้ linear search O(n) - ช้ากว่า IndexOfKey เพราะไม่ได้จัดเรียงตามค่า
  • ถ้ามีค่าซ้ำกัน จะคืนดัชนีของค่าที่พบก่อน (ตาม sorted order ของคีย์)
  • ใช้ร่วมกับ GetByIndex(index) เพื่อดึงค่าจากดัชนี
  • SortedList ใส่ค่าได้ซ้ำได้ ไม่เหมือน SortedSet/HashSet