.NET Framework поддържа и силно типизирани колекции. Пространството от имена, което съдържа класовете за работа с тях е System.Collections. Specialized. Пример за силно типизирана колекция е StringDictionary. Това е клас, който работи точно като Hashtable, но използва само string за ключове и стойности. При използване на този клас няма нужда от преобразуване на типа към string при извличане на стойност от хеш-таблицата:
StringDictionary addresses = new StringDictionary();
addresses["доктор Иванов"] = "с. Гинци, на площада";
addresses["бат Сали"] = "гр. София, кв. Факултета";
Console.WriteLine("{0} живее в {1}",
"доктор Иванов", addresses["доктор Иванов"]);
| Специални колекции
.NET Framework поддържа и някои специални колекции, които приличат на вече разгледаните, но имат малко по-различно предназначение. Пример за специален тип колекция е хеш-таблица от низове, която не различава главни от малки букви в ключа на елементите. В .NET Framework такава колекция можем да получим чрез метода CreateCaseInsensitiveHashtable() на класа CollectionsUtil:
Hashtable addresses =
CollectionsUtil.CreateCaseInsensitiveHashtable();
addresses["бай Иван"] = "с. Мугла";
Console.WriteLine("{0} живее в {1}",
"БАЙ ИВАН", addresses["БАЙ ИВАН"]);
| Упражнения -
Напишете програма, която прочита от конзолата N цели числа, записва ги в масив и отпечатва тяхната сума и средното им аритметично.
-
Напишете програма, която прочита от конзолата масив от числа и намира в него най-дългата поредица от числа, такива че всяко следващо да е по-голямо от предходното.
-
Напишете програма, която прочита от конзолата масив от N числа и намира в него поредица от точно K числа (1 -
Напишете клас Matrix, който съдържа матрица от реални числа, представена чрез двумерен масив. Дефинирайте оператори за събиране, изваждане и умножение на матрици, методи за достъп до съдържанието и метод за отпечатване.
-
Напишете програма, която прочита от конзолата масив от N цели числа и цяло число K, сортира масива и чрез метода Array.BinSearch(…) намира най-голямото число от масива ≤ K и най-малкото число от масива ≥ K. Да се отпечата сортирания масив, с отбелязани в него търсените две числа.
-
Даден е масив от N цели числа, за който знаем, че един от елементите му (т. нар. мажорант) се среща на поне 1 + N/2 различни позиции. Да се напише програма, която с помощта на класа Stack намира мажоранта на масива. Например ако имаме масива {3, 2, 2, 3, 2, 1, 3, 2, 2, 2, 1}, неговият мажорант е 2. Ако се затруднявате, помислете дали не можете да обходите елементите и всеки от тях или да го добавяте в стека, ако съвпада с елемента на върха му, или в противен случай да премахвате елемента от върха на стека.
-
Даден е масив от символни низове. Да се напише метод, който намира всички низове от масива, които имат четна дължина. Методът трябва да връща масив от символни низове и трябва вътрешно да използва класа StringCollection.
-
Даден е масив от символни низове. Да се напише програма, която отпечатва всички различни низове от масива и за всеки от тях колко пъти се среща. Низовете в резултата трябва да са подредени по брой срещания в низходящ ред. Препоръчва се използване на хеш-таблица с ключове низовете и стойности брой срещания. За сортирането може да се използва Array.Sort(…).
-
Даден е речник, който представлява масив от двойки стойности – дума и значение. Да се напише програма, която превежда поредица от думи. Има ли смисъл да се ползва хеш-таблица?
-
Да се напише клас ComplexNumber, който представлява комплексно число с реална и имагинерна част от тип double. Да се напише метод, който приема като параметър масив от комплексни числа и връща като резултат комплексното число, което се среща най-голям брой пъти в този масив. За целта да се използва хеш-таблица, в която за всяко комплексно число се пази броят на срещанията му. Не забравяйте да реализирате предварително по подходящ начин методите Equals(…) и GetHashCode() на класа ComplexNumber.
Използвана литература -
Светлин Наков, Масиви и колекции – http://www.nakov.com/dotnet/ lectures/Lecture-7-Arrays-and-Collections-v1.0.ppt
-
MSDN Training, Programming with the Microsoft® .NET Framework (MOC 2349B), Module 7: Strings, Arrays, and Collections
-
Jeff Prosise, Programming Microsoft .NET Microsoft Press, 2002, ISBN 0735613761
-
Jeffrey Richter, Applied Microsoft .NET Framework Programming, Microsoft Press, 2002, ISBN 0735614229
-
Joel Fugazzotto, C# Complete, Sybex Inc., ISBN 0782142036
-
MSDN Library – http://msdn.microsoft.com
www.devbg.org
Българска асоциация на разработчиците на софтуер (БАРС) е нестопанска организация, която подпомага професионалното развитие на българските софтуерни специалисти чрез образователни и други инициативи.
БАРС работи за насърчаване обмяната на опит между разработчиците и за усъвършенстване на техните знания и умения в областта на проектирането и разработката на софтуер.
Асоциацията организира специализирани конференции, семинари и курсове за обучение по разработка на софтуер и софтуерни технологии.
БАРС организира създаването на Национална академия по разработка на софтуер – учебен център за професионална подготовка на софтуерни специалисти.
|
Сподели с приятели: |