XXVI : Cách dùng SortedList trong C#

Ngày đăng: 2023-05-02 21:03:13

Mục lục

1. SortedList là gì?

SortedList có thể lưu trữ các cặp key/value được sắp xếp theo các key based trên Icompaper.

Ví dụ: nếu các khóa thuộc loại nguyên thủy thì sắp xếp theo thứ tự tăng dần.

Trong c# có hỗ trợ generic SortedList và non-generic SortedList. Bạn nên sử dụng generic SortedList vì nó hoạt động nhanh hơn và ít gặp lỗi hơn.

sorteslist 01 jpg

Các đặc điểm của SortedList:

  • Là một mảng các cặp key/value được sắp xếp theo các key.
  • Sắp xếp các phần tử ngay khi chúng được thêm vào.Sắp xếp các khóa kiểu nguyên thủy theo thứ tự tăng dần và các khóa đối tượng dựa trên IComparer <T>.
  • Key phải là duy nhất (không trùng nhau) và không được rỗng.
  • Value có thể là giá trị null.
  • Một giá trị có thể được truy cập thông qua key.
  • Nó sử dụng ít bộ nhớ.

2. Tạo SortedList

Ví dụ dưới đây minh họa cho cách tạo một SortedList và thêm các cặp key.value vào trong SortedList.

using System;
using System.Collections;

namespace VietJackCsharp
{
    class TestCsharp
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Vi du minh hoa SortedList trong C#");
            Console.WriteLine("-------------------------------------");
            SortedList numberNames = new SortedList();

            numberNames.Add(3, "Three");

            numberNames.Add(1, "One");

            numberNames.Add(2, "Two");

            numberNames.Add(4, null);

            numberNames.Add(10, "Ten");

            numberNames.Add(5, "Five");
            ICollection key = numberNames.Keys;

            foreach (var k in key)
            {
                Console.WriteLine("Key: {0}, Value: {1}",k, numberNames[k]);
            }


            Console.ReadKey();
        }
    }
}

Trong ví dụ trên, một SortedList được tạo bằng cách chỉ định key/value mà nó sẽ lưu trữ. 

ở đây ta sử dụng từ khóa var mà không cần khai báo kiểu giá trị cụ thể của k.

Việc sử dụng phương thức Add() chỉ thêm duy nhất một cặp key/value vào trong SortedList. Các khóa không được để trống cũng như không trùng nhau.

Kết quả:

Ngoài ra ta cũng có thể khởi tạo nhiều cặp key/value như dưới đây:

 

using System;
using System.Collections;

namespace thuanhoaonline
{
    class TestCsharp
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Vi du minh hoa SortedList trong C#");
            Console.WriteLine("-------------------------------------");
            SortedList numberNames = new SortedList()

                {

                    {"London", "UK"},

                    {"New York", "USA"},

                    { "Mumbai", "India"},

                    {"Johannesburg", "South Africa"}

                    };
            ICollection key = numberNames.Keys;

            foreach (var k in key)
            {
                Console.WriteLine("Key: {0}, Value: {1}",k, numberNames[k]);
            }


            Console.ReadKey();
        }
    }
}

Các cặp key/value sẽ được sắp xếp ngay sau khi được thêm vào trong SortedList.

Kết quả:

3. Truy cập SortedList

Ta có thể truy cập vào SortedList bằng cách sử dụng key để lấy hoặc đặt lại value trong SortedList. Ngoài ra có thể sử dụng phương thức ContainsKey để thêm giá trị vào SortedList.

using System;
using System.Collections;

namespace VietJackCsharp
{
    class TestCsharp
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Vi du minh hoa SortedList trong C#");
            Console.WriteLine("-------------------------------------");
            SortedList numberNames = new SortedList()

                {

                    {3, "Three"},

                    {1, "One"},

                    {2, "Two"}

                    };

            //nếu key tồn tại

            if (!numberNames.ContainsKey(4))

            {

                numberNames[4] = "Four";

            }
            ICollection key = numberNames.Keys;

            foreach (var k in key)
            {
            if ( k is 4) { Console.WriteLine("Key: {0}, Value: {1}", k, numberNames[k]); }
                
            }


            Console.ReadKey();
        }
    }
}

Kết quả

4. Xóa các phần tử khỏi SortedList

Để xóa các cặp key/value khỏi SortedList ta có thể sử dụng phương thức Remove() và RemoveAt().

SortedList numberNames = new SortedList()

{

  {3, "Three"},

  {1, "One"},

  {2, "Two"},

    {5, "Five"},

  {4, "Four"},

};

     

numberNames.Remove(1);// xóa phần tử có key = 1

numberNames.RemoveAt(0);//xóa phần tử có key == 0

Kết quả:

 

Về bài trước...

                                  Bài tiếp theo...


Tài liệu lập trình C#

Bài viết trong cùng chuyên mục

Góc games giải trí (chơi trực tiếp trên web) Đăng nhập (chơi có thưởng)Hướng dẫn chơi nhận thưởng



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Bắn bóng

Plapy Bird (NH.Đông)

Diablo

Vẽ hình cứu người

Game Phases

Game vui chơi có thưởng

Game bắn cá

Street Fight (Chơi trên điện thoại và máy tính bảng)

Street Fight (Chơi trên máy tính và laptop)

Chọn cặp hình giống nhau



0379136392

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   KTT-0362497726:Ok! Mình rất thích trang web của bạn.

Trả lời

 +   HoangQuan-0985073641:Cần tạo nhiều game hay nữa em!

Trả lời

 *   Lê Thuyên-0379136391:HoangQuan0985073641--->Ok! Em cảm ơn anh ạ!

Trả lời

 +   Lê Dương-0393499146:Làm thêm game 3D nữa?

Trả lời

 *   Lê Thuyên-0379136392:Lê Dương0393499146--->Sắp có game 3D hay rồi.Tuyệt phẩm nhé kkk

Trả lời

 *   Lê Dương-0393499146:Lê Dương0393499146--->Game Street Fight mới chỉ chơi được trên máy tính phải không anh Titoe?

Trả lời

 *   Lê Thuyên-0379136392:Lê Dương0393499146--->Ừ Em. Anh đang làm điều khiển cho phần Smathhome em.

Trả lời

 *   Lê Thuyên-0379136392:Lê Dương0393499146--->Game Street Fight đã chơi được trên điện thoại rồi nhé em.

Trả lời

 +   L.Ngư-0906744578:Nghiên cứu tích hợp sàn giao dịch tiền ảo đi cu.

Trả lời

 *   Lê Thuyên-0379136392:L.Ngư0906744578--->Đang nghiên cứu Grandma.

Trả lời

 +   Nguyễn Tuyển-0909615882:Thiết kế web đa ngôn ngữ đi em.

Trả lời

 *   Lê Thuyên-0379136392:Nguyễn Tuyển0909615882--->Ok chị!

Trả lời


Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Các chuyên mục:


455985