Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# 4.0 ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство - 2011Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 245

Автор Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрируСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ класса SortedDictionary<TKey, TValueX Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π²ΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ класса Dictionary<TKey, TValueX Π’ Π΄Π°Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² отсортирована ΠΏΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слуТат Π² качСствС ΠΊΠ»ΡŽΡ‡Π°.

// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ класса ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΉ // ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ SortedDictionary<TKey, TValueX

using System;

using System.Collections.Generic;

class GenSortedDictionaryDemo { static void Main() {

// Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ для хранСния ΠΈΠΌΠ΅Π½ ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ // Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² ΠΈ ΠΈΡ… Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹.

SortedDictionary<string, double> diet =

new SortedDictionary<string, double>();

// Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнты Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, diet.Add("Π‘Π°Ρ‚Π»Π΅Ρ€, Π”ΠΆΠΎΠ½", 73000); diet.Add("Π¨Π²Π°Ρ€Ρ†, Capa", 59000); diet.Add("Пайк, Вомас", 45000); diet.Add("Ѐрэнк, Π­Π΄", 99000);

// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ‚.Π΅. Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ ΠΈ ΠΈΠΌΠ΅Π½.

ICollection<string> с = diet.Keys;

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ для получСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚.Π΅. Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹, foreach(string str in с)

Console.WriteLine("{0}, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°: {1:C}", str, diet[str]);

}

}

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π‘Π°Ρ‚Π»Π΅Ρ€, Π”ΠΆΠΎΠ½, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°: $73,000.00 Пайк, Вомас, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°: $45,000.00 Ѐрэнк, Π­Π΄, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°: $99,000.00 Π¨Π²Π°Ρ€Ρ†, Π‘Π°Ρ€Π°, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°: $59,000.00

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, список Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² ΠΈ ΠΈΡ… Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ отсортированы ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ, Π² качСствС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС слуТит фамилия ΠΈ имя Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°.

Класс SortedListCTKey, TValue>

Π’ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ класса SortedList<TKey, TValue> хранится отсортированный список ΠΏΠ°Ρ€ "ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅". Π­Ρ‚ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ эквивалСнт класса Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ SortedList. Π’ классС SortedList<TKey, TValue> Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ интСрфСйсы IDictionary, IDictionary<TKey, TValue>, ICollection, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable ΠΈ IEnumerable<KeyValuePair<TKey, TValueΒ». Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° SortedList<TKey, TValue> измСняСтся динамичСски, автоматичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡΡΡŒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. Класс SortedList<TKey, TValue> ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ классу SortedDictionary<TKey, TValue>, Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ характСристики. Π’ частности, класс SortedListcTKey, TValue> ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ мСньшС памяти, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ класс SortedDicti-onary<TKey, TValue> позволяСт быстрСС Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ нСупорядочСнныС элСмСнты Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ.

Π’ классС SortedListcTKey, TValue> прСдоставляСтся Π½Π΅ΠΌΠ°Π»ΠΎ конструкторов. НиТС пСрСчислСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ конструкторы этого класса.

public SortedList ()

public SortedList(IDictionaryCTKey, TValue> dictionary)

public SortedList(int capacity)

public SortedList(IComparer<TK> comparer)

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ конструктора создаСтся пустой список с Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ конструктора создаСтся отсортированный список с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ количСством элСмСнтов dictionary. Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ конструктора с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° capacity задаСтся Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, создаваСмой Π² Π²ΠΈΠ΄Π΅ отсортированного списка. Если Ρ€Π°Π·ΠΌΠ΅Ρ€ списка Π·Π°Ρ€Π°Π½Π΅Π΅ извСстСн, Ρ‚ΠΎ, ΡƒΠΊΠ°Π·Π°Π² Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ создаваСмой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° списка Π²ΠΎ врСмя выполнСния, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов. И Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ конструктора допускаСтся ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° comparer способ сравнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², содСрТащихся Π² спискС.

Π•ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° SortedListcTKey, TValue> увСличиваСтся автоматичСски ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости, ΠΊΠΎΠ³Π΄Π° Π² список Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты. Если тСкущая Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ, Ρ‚ΠΎ ΠΎΠ½Π° увСличиваСтся. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ указания Смкости ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° SortedListcTKey, TValue> ΠΏΡ€ΠΈ Π΅Π΅ создании Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² сниТСнии ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. РазумССтся, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ цСлСсообразно лишь Π² Ρ‚ΠΎΠΌ случаС, Ссли Π·Π°Ρ€Π°Π½Π΅Π΅ извСстно, сколько элСмСнтов трСбуСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΉ.

Π’ классС SortedListcTKey, TValue> опрСдСляСтся ряд собствСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² интСрфСйсах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π½Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ. НСкоторыС ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² этого класса пСрСчислСны Π² Ρ‚Π°Π±Π». 25.19. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ GetEnumerator (), слуТит для пСрСчислСния ΠΏΠ°Ρ€ "ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅", хранящихся Π² отсортированном спискС Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° KeyValuePair.

Π’Π°Π±Π»ΠΈΡ†Π° 25.19. НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² классС SortedListCTKey, TValue>

ΠœΠ΅Ρ‚ΠΎΠ΄    ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅

public void    Add (TKey    key,    Π”обавляСт Π² список ΠΏΠ°Ρ€Ρƒ β€œΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅",

TValue value)    ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ key ΠΈ value.

Если ΠΊΠ»ΡŽΡ‡ key ΡƒΠΆΠ΅ находится Π² спискС, Ρ‚ΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ измСняСтся, ΠΈ гСнСрируСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ArgumentException public bool    ContainsKey (ВК key) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли Π²Ρ‹

Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ список содСрТит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ key Π² ΠΊΠ°Ρ‡Π΅-_ствС ΠΊΠ»ΡŽΡ‡Π°; Π° ΠΈΠ½Π°Ρ‡Π΅ —логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false

ΠœΠ΅Ρ‚ΠΎΠ΄

ОписаниС

public bool

ContainsValue(TValue value)

public IEnumerator<KeyValuePair CTKey, TValue>> GetEnumerator() public int IndexOfKey(TKey key)

public int IndexOfValue(TValue value)

public bool Remove(TKey key)

public void RemoveAt(int index) public void TrimExcessO

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ссли Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ список содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ value; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ для Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ словаря

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс ΠΊΠ»ΡŽΡ‡Π° key. Если искомый ΠΊΠ»ΡŽΡ‡ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ Π² спискС, возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния значСния value Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ спискС. Если искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ Π² спискС, возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1 УдаляСт ΠΈΠ· списка ΠΏΠ°Ρ€Ρƒ β€œΠΊΠ»ΡŽΡ‡-значСниС” ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ key. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ исходС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ возвращаСтся логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Π° Ссли ΠΊΠ»ΡŽΡ‡ key отсутствуСт Π² спискС β€” логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false УдаляСт ΠΈΠ· списка ΠΏΠ°Ρ€Ρƒ β€œΠΊΠ»ΡŽΡ‡-значСниС” ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ индСксу index Π‘ΠΎΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ отсортированного списка

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² классС SortedList<TK, TV> ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ собствСнныС свойства, ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² интСрфСйсах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π½Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ. Π­Ρ‚ΠΈ свойства ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½ΠΈΠΆΠ΅.

Бвойство

ОписаниС

public int Capacity { get; set; }

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ устанавливаСт Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ

Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ отсо

Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ списка

public IComparer<TK> Comparer { get;

β–  } ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ сравнСния для Π²Ρ‹Π·Ρ‹

Π²Π°ΡŽΡ‰Π΅Π³ΠΎ списка

public IList<TK> Keys { get; }

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

public IList<TV> Values { get; }

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π² классС SortedList<TKey,

TValue> рСализуСтся ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅

индСксатор, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² интСрфСйсС IDictionaryCTKey, TValueX

public TValue this[TKey key] { get; set;

} .

Π­Ρ‚ΠΎΡ‚ индСксатор слуТит для получСния ΠΈ

установки значСния элСмСнта ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ,

Π° Ρ‚Π°ΠΊΠΆΠ΅ для добавлСния Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта. Но Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π² качСствС

индСкса слуТит ΠΊΠ»ΡŽΡ‡ элСмСнта, Π° Π½Π΅ сам индСкс.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрируСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ класса

SortedList<TKey, TValueX Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ прСдставлСнного

Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ². Π’ Π΄Π°Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… хранится Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° SortedList.

// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ класса ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΉ // ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ SortedList<TKey, TValue>.

using System;

using System.Collections.Generic;

class GenSLDemo {

static void Main() {

// Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ отсортированного списка // для хранСния ΠΈΠΌΠ΅Π½ ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² ΠΈ ΠΈΡ… Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹.

SortedList<string, double> si =

new SortedList<string, double>();

// Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнты Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, si.Add("Π‘Π°Ρ‚Π»Π΅Ρ€, Π”ΠΆΠΎΠ½", 73000); si.Add("Π¨Π²Π°Ρ€Ρ†, Capa", 59000); si.Add("Пайк, Вомас", 45000); si.Add("Ѐрэнк, Π­Π΄", 99000);

// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ‚.Π΅. Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ ΠΈ ΠΈΠΌΠ΅Π½.

ICollection<string> с = si.Keys;

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ для получСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚.Π΅. Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹, foreach(string str in с)

Console.WriteLine("{0}, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°: {1:C}", str, si[str]);

Console.WriteLine();

}

}