Kurs: Core Windows Forms Technologies Materijali vezani uz ovu lekciju: - Test kolekcije - Kolekcije (PDF dokument) NizoviKolekcije su standardne strukture podataka koje dopunjuju nizove. Nizovi su jedina kolekcija koja je ugrađena u C# jezik. Sve ostale kolekcije su ugrađene u prostor imena System.Collections. Pored jednodimenzionalnih nizova detaljno obrađenih u prošloj lekciji moguće je definisati i dvodimenzionalne i tzv. testeraste nizove. U nastavku je prikazano deklarisanje i instanciranje dvodimenzionalnog niza dimenzija 10 x 10.
Članovima niza pristupa se kao arr1[i,j] gde brojevi "i" i "j" pripadaju skupu i,j Є {0,1,..,9}. Kod ovakvog dvodimenzionalnog niza sve vrste matrice imaju istu dužinu. Moguće je definisati i tzv. testeraste dvodimenzionalne nizove gde svaka vrsta matrice ima proizvoljnu dužinu. U nastavku je deklarisan testerasti niz koji će imati dve vrste. Naknadno se definišu vrste testerastog dvodimenzionalnog niza i one mogu biti proizvoljne dužine. Vrste testerastog niza su jednodimenzionalni nizovi. U primeru u nastavku prva vrsta testerastog niza ima dužinu 4 a druga 5.
Klasa ArrayPored standardnog načina konstruisanja nizova u programskom jeziku C# je moguće kreirati nizove upotrebom klase Array. U nastavku je prikazano kreiranje niza koji će čuvati 12 celobrojnih vrednosti kao i način pristupa članovima niza upotrebom klase Array.
Prvom članu niza dodeljuje se vrednost 100, drugom 200, trećem 300. Za setovanje vrednosti elemenata niza koristi se metoda SetValue a za čitanje vrednosti elemenata niza koristi se metoda GetValue. Klasa Array ima još neke metode koje omogućavaju jednostavnu manipulaciju članovima niza. Metoda Clear() resetuje sve elemente niza. Metoda Reverse postavlja članove niza u obrnutom redosledu. Metoda Sort sortira elemente niza itd.
Prostor imena System.Collections sadrži klase i interfejse koje definišu različite kolekcije objekata. Od klasa treba pomenuti ArrayList, Queue, Stack, Hashtable. Od interfejs tu su ICollection, IEnumerable, IEnumerator, IDictionaryEnumerator, IList itd. InterfejsiOvde ćemo reći nešto o osnovnim ulogama pojedinih interfejsa u prostoru imena System. Collections. ICollection definiše veličinu i enumeratore za sve kolekcije. IComparer sadrži metode za komparaciju dva objekta. IDictionary predstavlja kolekciju parova (ključ,vrednost). IDictionaryEnumerator - enumeracija kroz elemente rečnika. IEnumerable sadrži enumerator koji omogućava jednostavnu iteraciju kroz kolekciju. IEnumerator - jednostavna iteracija kroz kolekciju. IList interfejs predstavlja kolekciju objekata kojima se može pristupati preko indeksa. Klasa ArrayListElementima liste pristupa se preko indeksa kao i kod niza. Za razliku od niza nije neophodno unapred poznavati broj elemenata niza. Najčešće korišćene metode ove klase su: Metoda Add(object) dodaje objekat na kraj liste. Metoda Clear() briše sve elemente iz liste. Metoda Insert(pozicija, vrednost) ubacuje objekat vrednost na pozicuju pozicija. Metoda RemoveAt(index) briše elemenat sa indeksom index iz liste. GetEnumerator() metoda vraća iterator koji se koristi za iteraciju(prolaz) kroz elemente liste. Metoda Sort sortira elemente liste. Metoda Reverse() prikazuje elemente liste u inverznom redosledu. Metoda ToArray() kopira elemente liste u jednodimenzionalan niz.
U nastavku je prikazan način kreiranja ArrayList kolekcije, način dodavanja članova u listu kao i način brisanja članova sa kraja liste.
Radi jednostavne iteracije kroz listu iskorišćena je metoda GetEnumerator koja vraća enumerator liste. While petlja služi za štampanje elemenata liste. Enumerator se na početku pozicionira ispred prvog elementa kolekcije. Prvim pozivom metode MoveNext on se pozicionira na prvi element liste, sledećim pozivom na drugi itd. Kada se stigne do kraja liste metoda MoveNext vraća false. Property Curent daje tekući element liste. Da bi korišćenje kolekcija bilo moguće, učitavamo prostor imena Collections: using System.Collections; Redovi (Queues)Redovi predstavljaju realizaciju FIFO (first-in, first-out) strukture podataka. Metoda Enqueue služi za dodavanje elemenata u red. Ulazni parametar ove metode je tipa object tj. može biti bilo koji tip podataka. Skidanje elemenata iz reda vrši se korišćenjem metode Dequeue koja nema ulazne parametre. Kada se pozove ova metoda iz reda se izbacuje najstariji član tj. član koji je prvi ubačen u red. Za jednostavan prolazak kroz red koristi se metoda GetEnumerator koja vraća enumerator reda.
Primer upotrebe Queue-a U nastavku je ilustrovana upotreba reda. Najstariji član u redu je karakter ‘A' pa se pozivom metode Dequeue on izbacuje iz reda. Rezultat izvršavanja sekvence koda prikazan je ispod koda.
Rezultat izvršavanja sekvence koda je:
|
Smatrate da je ova lekcija korisna? Preporučite je. | Broj preporuka:0 |