70-536 Collections and Dictionaries

Poniższy artykuł pochodzi z serii Przygotowań do egzaminu 70-536.

Patrząc na materiał który dzisiaj mamy do przerobienia artykuł nie powinien być długi a pomówimy sobie o kolekcjach i słownikach. Czyli o bardzo pomocnych typach danych :)

Kolekcje

Kolekcja jest klasą która pozwala na dodawanie elementów a później iterowanie po nich. .NET Framework udostępnia nam następujące klasy kolekcji:

ArrayList – prosta klasa która umożliwia przechowywanie dowolnego typu danych oraz iterowanie po nich. Można ją oczywiście rozszerzyć do własnych celów etc.

Queue – nic innego jak kolekcja FIFO (first-in, first-out)

Stack – kolega FIFO czyli LIFO (last-in, first-out)

StringCollection – rodzaj ArrayList który przechowuje wartości string. Nie ma zaimplementowanego sortowania

BitArray – kolekcja przechowująca wartości typu boolean.

ArrayList

Czas na przykład użycia ArrayList. Dla przypomnienia dodam, że klasa ta mieście się w przestrzeni nazw System.Collection . W poniższym przykładzie utworzymy sobie taka kolekcje i dodamy do niej cztery różnorakie elementy a następnie przy pomocy pętli foreach wyświetlimy zawartość listy. Dla przypomnienia dodam, że przykłady są zaczerpnięte z training kit’a (dodaje to żeby nie być posądzonym o jakieś plagiaty ;) ) Robie to świadomie żeby nie wymyślać kodu do prostej prezentacji danych dobrodziejstw .NET-u.

   1: ArrayList al = new ArrayList();
   2: al.Add("Hello");
   3: al.Add("World");
   4: al.Add(5);
   5: al.Add(new FileStream("delemete", FileMode.Create));
   6: Console.WriteLine("The array has " + al.Count + " items:");
   7: foreach (object s in al)
   8: Console.WriteLine(s.ToString());

Po skompilowaniu kodu na ekranie powinno nam się wyświetlić:

The array has 4 items:
Hello
World
5
System.IO.FileStream

W kolejnym przykładzie posortujemy dodane elementy zaimplementowaną automatycznie metodą Sort. Ale żeby nie było nudno użyjemy metody Remove do usunięcia elementu i metody Insert która pozwala nam w określone miejsce listy dopisać dowolny element.

   1: ArrayList al = new ArrayList();
   2: al.Add("Hello");
   3: al.Add("World");
   4: al.Add("this");
   5: al.Add("is");
   6: al.Add("a");
   7: al.Add("test");
   8: al.Remove("test");
   9: al.Insert(4, "not");
  10: al.Sort();
  11: foreach (object s in al)
  12: Console.WriteLine(s.ToString());

 

Na ekranie zostanie wyświetlone:

A
Hello
is
not
this
World

Pięknie posortowane z usuniętym elementem “test” oraz dodanym “not”.

Queue and Stack

Klasy te przechowują elementy które można pobrać i usunąć w pojedynczym kroku… Kolejka jak już pisałem charakteryzuje się tym, że dane są obsługiwane w takiej kolejności jak zostały do niej wrzucone. Natomiast w stosie jest tak, że dane najpóźniej dodane są wcześniej obsługiwane. Queue do dodania i usunięcia elementu używa metod Enqueue i Dequeue natomiast Stack odpowiednio Push i Pop. Przykład demonstruje różnice pomiędzy klasami.

   1: Queue q = new Queue();
   2: q.Enqueue("Hello");
   3: q.Enqueue("world");
   4: q.Enqueue("just testing");
   5: Console.WriteLine("Queue demonstration:");
   6: for (int i = 1; i <= 3; i++)
   7: Console.WriteLine(q.Dequeue().ToString());
   8: Stack s = new Stack();
   9: s.Push("Hello");
  10: s.Push("world");
  11: s.Push("just testing");
  12: Console.WriteLine("Stack demonstration:");
  13: for (int i = 1; i <= 3; i++)
  14: Console.WriteLine(s.Pop().ToString());

 

Dictionaries

Słownik to kolekcja powiązań wartość –> klucz. Na prostym przykładzie każde państwo ma swoją stolice…państwo->stolica. .NET Framework udostępnia następujące klasy słowników:

Hashtable – słownik nazwa/wartość z którego dane można wyjąć za pomocą nazwy bądź indeksu

SortedList – słownik automatycznie posortowany wg klucza

StringDictionary – rodzaj Hashtable realizowany podobnie jak w kolekcjach StringCollection

ListDictionary – słownik zoptymalizowany dla małej listy obiektów posiadający mniej niż 10 pozycji

HybridDictionary – słownik który używa ListDictionary kiedy ilość elementów jest mała, kiedy jednak wzrośnie automatycznie przełącza się w Hashtable

NameValueCollection – nazwa/wartość który umożliwa wyszukiwanie po nazwach bądź indeksach

Przykłady użycia można znaleźć w internecie…ja nie przedłużam, dzięki za poświęcenie czasu mam nadzieje, że czegoś się dowiedziałeś drogi czytelniku a jak nie to chociaż sobie przypomniałeś.

Kolejny artykuł z serii to 70-536: Generic Collections

Tagi: , , ,

Comments (1) -

asdf
asdf Poland
6/15/2010 11:27:46 PM Permalink

"Hashtable – słownik nazwa/wartość z którego dane można wyjąć za pomocą nazwy bądź indeksu"
Nie można pobierać po indeksie tak jak z tablic czy list!

Pingbacks and trackbacks (2)+

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading


Eastgroup.pl na facebooku