# SortedList

SortedList ham xuddi Listga o\`xshash to\`plam. Elementlarni qo\`shish, o\`chirish, saralash kabi funksiyalar SortedListda ham mavjud. Ammo Listdan farqi elementlar kalit/qiymat tarzida bo\`ladi. Bu qanday bo\`ladi deysizmi? Har bir element qiymatini o\`z kaliti bo\`ladi.

| **1**          | **2**    | **3** | **4**   | **5**    |
| -------------- | -------- | ----- | ------- | -------- |
| Muhammad Karim | Xondamir | Jasur | Farrukh | Abdulloh |

Masalan bu rasmda,

1 – kalitda Muhammad Karim

2 – kalitda Xondamir

3 – kalitda Jasur

4 – kalitda Farrukh

5 – kalitda Abdulloh turadi degani.

MUHIM QOIDALAR !

* SortedListda elementga nafaqat indeksi orqali balki, kaliti orqali ham kirish mumkin
* Kalit null qiymat qabul qilmaydi, ammo element null qiymatni qabul qiladi.
* Bir xil qiymatli elementlar bo\`lishi mumkin, ammo ularning kalitlari bir xil bo\`lmaydi
* Kalitlarni faqat sonlar emas balki ixtiyoriy tipda ham berishingiz mumkin, faqatgina kalitlarning hammasi bir xil tipda bo\`lishi kerak, aks holda kompilyator ishlamaydi

**SortedListni qanday yaratamiz ?**

### 1-bosqich *\*\**

Kod yuqorisiga using System.Collections; ni yozib qo\`ying

### 2-bosqich

Berilgan sintaksis bo\`yicha SortedList yaratamiz

```csharp
SortedList list_nomi = new SortedList();
```

list\_nomi degan joyga o\`zingiz ixtiyoriy nom berishingiz mumkin !

### **3-bosqich Element qo\`shamiz 2 xil usulda :**

1\) SortedListni yaratiboq elementlarni yoniga yozib qo\`ying (xuddi massivdek)

```csharp
SortedList list = new SortedList() 
{ 
    {1, "Abdullajon" }, 

    {2, "Shum bola" },

    {3, "Sariq dev" }  
};
```

Ahamiyat bersangiz elementlar ham jingalak qavs ichida yoziladi, sababi kompilyator kaliti qaysi qiymatga tegishli ekanini aniqlashda xato qilmasligi uchun.

2\) Add() funksiyasi yordamida qo\`shish mumkin

```csharp
SortedList list = new SortedList();
list.Add(1, "Abdullajon");
list.Add(2, "Shum bola");
list.Add(3, "Sariq dev");
```

**4-bosqich**

**Elementlarga kirish GetKey() va GetByIndex()**

```csharp
SortedList list = new SortedList();
list.Add(1, "Abdullajon");
list.Add(2, "Shum bola");
list.Add(3, "Sariq dev");

for(int i = 0; i < list.Count; i++)
{
    Console.WriteLine($"{list.GetKey(i)} - {list.GetByIndex(i)}");
}
```

**Natija:**

![](/files/-MdgooTE4gIutK2iixdq)

GetKey(i) – i element turgan indeksi, indeksiga qarab elementning kalitini aniqlab berad&#x69;**.** GetByIndex(i) – i indeksiga qarab element qiymatini aniqlab beradi

```csharp
SortedList list = new SortedList();
list.Add(1, "Abdullajon");
list.Add(2, "Shum bola");
list.Add(3, "Sariq dev");

string x = (string)list[2];

Console.WriteLine(x);
```

Natija:

![](/files/-MdgpGptW3XWnZwkFIpq)

```csharp
SortedList list = new SortedList();

list.Add(1, "Abdullajon"); // pair
list.Add(2, "Shum bola"); // pair
list.Add(3, "Sariq dev");// pair

foreach(DictionaryEntry pair in list)
{
    Console.WriteLine($"{pair.Key} - {pair.Value}");
}
```

Natija:

![](/files/-MdgpSCAfN6DY0aw3TPM)

**SortedListga misollar**

```csharp
using System;
using System.Collections;

namespace ConsoleApp11
{
    class Program
    {
        static void Main(string[] args)
        {
            SortedList list = new SortedList();

            list.Add(1, "Lambo");
            list.Add(2, "Mercedes"); 
            list.Add(3, "BMW");
            list.Add(4, "RoLLs");
            list.Add(5, "BentLey");

            foreach (DictionaryEntry pair in list)
            {
                Console.WriteLine($"{pair.Key} - {pair.Value}");
            }
        }
    }
}
```

Natija:

![](/files/-Mdgpn09V99OghRXvQmh)

## SortedList dan elementlarni o\`chirish

### Clear() Remove() RemoveAt()

Clear() - funksiyasi to'plamdagi barcha elementlarni o'chirib tashlaydi

```csharp
SortedList list = new SortedList();

list.Add(1, "Lambo");
list.Add(2, "Mercedes"); 
list.Add(3, "BMW");
list.Add(4, "RoLLs");
list.Add(5, "BentLey");

list.Clear();

foreach (DictionaryEntry pair in list)
{
    Console.WriteLine($"{pair.Key} - {pair.Value}");
}
```

Natija:

![](/files/-MdgqIan0ovc9KM5QENQ)

Remove(T) – T-da turgan elementni o\`chiradi, T-indeksda turgan elementni emas.

```csharp
SortedList list = new SortedList();

list.Add(1, "Lambo");
list.Add(2, "Mercedes"); 
list.Add(3, "BMW");
list.Add(4, "RoLLs");
list.Add(5, "BentLey");

list.Remove(3);// 3-elementni o`chiradi, 3-indeksdagini emas

foreach (DictionaryEntry pair in list)
{
    Console.WriteLine($"{pair.Key} - {pair.Value}");
}
```

Natija:

![](/files/-MdgqiMBPjk1VudVUN1U)

### RemoveAt()

```csharp
SortedList list = new SortedList();

list.Add(1, "Lambo");
list.Add(2, "Mercedes"); 
list.Add(3, "BMW");
list.Add(4, "RoLLs");
list.Add(5, "BentLey");

list.RemoveAt(3);

foreach (DictionaryEntry pair in list)
{
    Console.WriteLine($"{pair.Key} - {pair.Value}");
}
```

Natija:

![](/files/-MdgqvDhX7HTZhKKoPv2)

{% hint style="info" %}
Eslatma! Remove() bilan RemoveAt() funksiyalarida qaysi element o\`chib ketganiga ahamiyat bering ular bir xil emas.
{% endhint %}

## Element bor yoki yo\`qligini tekshirish

### Contains(), ContainsKey(), ContainsValue()

Contains() va ContainsKey() funksiyalari bir xil

```csharp
SortedList list = new SortedList();

list.Add(1, "Lambo");
list.Add(2, "Mercedes"); 
list.Add(3, "BMW");
list.Add(4, "RoLLs");
list.Add(5, "BentLey");

Console.WriteLine(list.Contains(3));//kaliti 3
```

Natija:

![](/files/-Mdgr_Uu9llQBRoD3m26)

Bu funksiya kaliti 3ga teng bo'lgan element bor yoki yo'qligini tekshirib beradi. Bor bo'lsa True, bo'lmasa False.

### ContainsValue()

```csharp
SortedList list = new SortedList();

list.Add(1, "Lambo");
list.Add(2, "Mercedes"); 
list.Add(3, "BMW");
list.Add(4, "RoLLs");
list.Add(5, "BentLey");

Console.WriteLine(list.ContainsValue("Porsche"));
```

Natija:

![](/files/-Mdgs4uMEDptkCGTQMO-)

Bu funksiya kalitni emas, berilgan qiymat bor yoki yo'qligini tekshiradi. Listda Porsche yo'q edi. Shu sababli False.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dot-net.uz/c-.net/basic/yuqori-daraja/toplamlar/sortedlist.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
