21.09(2) Sistemske generičke klase: Generički nizovi i kolekcije
( ... List, Hashtable, Dictionary, Stack, Queue ... )
Pretpostavimo da radimo sa nekim skupom objekata koje želimo da nekako
organizujemo. U tom slučaju koriste se klase koje se označavaju kao
kolekcije (kolekcija=zbirka, skupljanje).
(Nizovi elemenata tipa dobijenog od generičkog tipa nisu dopušteni!)
C# generičke i ne-generičke kolekcije podataka
C# ima ugrađene specijalizovane klase koje mogu da čuvaju niz vrednosti ili objekata koji se nazivaju kolekcije (collections). U C#-u postoje dve vrste kolekcija: ne-generičke i generičke. Prostor imena (namespace) System.Collections sadrži ne-generičke tipove zbirki, a System.Collections.Generic u sebi sadrži generičke tipove kolekcija. U većini slučajeva, preporučuje se upotreba generičkih kolekcija jer one rade brže od ne-generičkih i takođe smanjuju pojavu izuzetaka jer ako nešto nije kako treba dobiće se greška prilikom kompajliranja.
Generičke kolekcije
(Klikom na naziv kolekcije bićete preusmereni na tutorialsteacher.com gde možete da vidite primere i da vežbate online)
C# u sebi ima ugrađene sledeće generičke klase za kolekcije:
|
Generička kolekcija: |
Opis: |
|---|---|
|
Generička lista - List<T> sadrži elemente navedenog tipa. Raste automatski dok u nju dodajete elemente. |
|
|
Rečnik - Dictionary<TKey, TValue> sadrži parove ključ / vrijednost. |
|
|
Uređena lista - SortedList u sebi čuva parove ključeva i vrijednosti. Automatski dodaje elemente u rastućem redoslijedu ključa. |
|
|
RED - Queue <T> čuva vrednosti u FIFO stilu (First In First Out). Održava redosled dodavanja vrednosti. Pruža Enqueue () metodu za dodavanje vrednosti i Dequeue () metodu za dohvaćanje vrednosti iz kolekcije. |
|
|
STEK - Stack <T> čuva vrijednosti kao LIFO (Last In First Out). Omogućava metodu Push () za dodavanje vrednosti i metode Pop () & Peek () za dohvaćanje vrednosti. |
|
|
Hashset<T> |
Hashset <T> sadrži ne duplicirane elemente. Eliminira duple elemente |
Da se podsetite gradiva koje je rađeno u prethodnim školskim godinama, pogledajte koje su to kolekcije koje nisu generičke:
|
NE-Generičke kolekcije: |
Opis: |
|---|---|
|
ArrayList u sebi čuva objekte bilo kojeg tipa - kao niz. Međutim, nema potrebe unapred specificirati veličinu ArrayList -a jer se automatski povećava. |
|
|
SortedList čuva parove ključeva i vrednosti. Automatski raspoređuje elemente u rastućem redosledu ključeva. C# uključuje i generičku i ne-generičku kolekciju SortedList. |
|
|
Stack čuva vrednosti u LIFO stilu (Last In First Out). Omogućava metodu Push () za dodavanje vrednosti i metode Pop () & Peek () za dohvaćanje vrednosti. C# uključuje i generički i ne-generički Stack. |
|
|
Queue čuva vrednosti u FIFO stilu (First In First Out). Održava redosled dodavanja vrednosti. Pruža Enqueue () metodu za dodavanje vrednosti i Dequeue () metodu za dohvaćanje vrednosti iz kolekcije. C# uključuje generički i ne-generički red. |
|
|
Hashtable čuva parove ključeva i vrednosti. Dohvaća vrednosti upoređivanjem hash vrednosti ključeva. |
|
|
BitArray |
BitArray upravlja kompaktnim nizom bitovnih vrednosti, koje su predstavljene kao Booleans, gde true označava da je bit uključen (1), a false označava da je bit isključen (0). |