Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 17

Kolekcije

Klasa ArrayList
Generičke liste List<T>
Kolekcije
 Nizovi dozvoljavaju da zapamtimo više vrednosti istog tipa.

 Nizovi si izvedeni iz abstraktne klase System.Array koja sadrži


metode i svojstva rad sa nizovima.

 Običan niz u C#-u ima fiksnu dužinu i kada se jednom zada


inicijalna dužina niza, niz se više ne može ni povećati ni smanjiti.

 .NET Framework u okviru imenskog prostora System.Collections


nudi bolje altrnative za realizaciju nizova

 Klasa ArrayList ima isto osnovno ponašanje kao običan niz, ali
omogućava dinamičku promenu dužine, tj. dodavanje i izbacivanje
elemenata tokom izvršenja programa.
Klasa ArrayList
 Klasa ArrayList dozvoljava smeštanje vrednosti različitog tipa i pruža
mogućnost dodavanja i uklanjanja elemenata po potrebi.

Da bi se koristila klasa ArrayList, mora se


dodati imenski prostor System.Collections
(using System.Collections).

Kreira se nova instanca klase


ArrayList.

Lista se sastoji od elemenata


tipa object, a kako se sve u C#-
u izvodi iz klase Object,
elemenat liste može biti bilo šta.

Za dodavanje novog elementa


listi koristi se metod Add.
Klasa ArrayList
 Objekat klase ArrayList se kreira na sledeći način:

ArrayList mojaLista = new ArryList();

 Očigledno je da se nigde ne definiše koja je veličina liste tj. koliko maksimalno


elemenata lista može da ima.

 Drugom verzijom konstruktora klase ArrayList mogu se inicijalizovati vrednosti


elemenata liste – konstruktoru predajemo niz (ili postojeću listu) objekata i
vrednosti iz običnog niza (tj. liste) se kopiraju u novi ArrayList objekat.

int[ ] niz = {15, 5, 8, 65, 12 };


ArrayList novaLista = new ArrayList(niz);

Ili

ArrayList novaLista = new ArrayList(staraLista);


Klasa ArrayList
 Dodavanje elemenata u listu postiže se korišćenjem metode Add
 Argument metoda Add je object (tj. može se dodati bilo koji tip elemenata)

 Objekat se dodaje na kraj liste

 Dodavanje elemenata na zadatu poziciju vrši se metodom Insert


 Prvi argument je pozicija na koju treba ubaciti elemenat, a drugi objekat koji

se ubacuje

string[] imena = { "Marija", "Iva", "Sonja", "Sofija", "Petra" };

ArrayList mojaLista = new ArrayList(imena);

mojaLista.Add("Helena");

mojaLista.Insert(3, "Ena");
Klasa ArrayList
 Elementima liste možemo pristupiti bilo preko foreach petlje (gde je
promenljiva unutar foreach petlje tipa object),

foreach (object x in mojaLista)


{
Console.WriteLine(x.ToString());
}

 Ako znamo da su sve promenljive unutar liste npr. celi brojevi, privremena
promenljiva foreach petlje je int

foreach (int x in mojaLista)


{
Console.WriteLine(x);
}
Klasa ArrayList
 Elementima liste možemo pristupiti i korišćenjem for petlje i indeksa kao kod
bilo kog drugog niza.

for (int i = 0; i < mojaLista.Count; i++)


{
Console.WriteLine(mojaLista[i].ToString());
}

 Za ArrayList objekat svojstvo Count predstavlja broj elemenata u kolekciji.

 Svojstvo Count je analogno svojstvu Length kod običnih nizova.


Klasa ArrayList
 Metodi Remove i RemoveAt klase ArrayList služe za izbacivanje
elemenata.

 Remove metod za argument ima objekat koji odgovara vrednosti nekog od


elemenata u kolekciji. Ovim metodom se izbacuje prvo pojavljivanje zadate
vrednosti, a svi ostali elementi se preraspoređuju da popune upražnjenu
poziciju.

 RemoveAt metod za argument ima poziciju sa koje treba izbaciti elemenat,


(tj. indeks elementa koga treba izbaciti).
Klasa ArrayList
Klasa ArrayList
 Za dodavanje i izbacivanje više elemenata odjednom koriste se metodi
AddRange i RemoveRange.

 AddRange prihvata niz vrednosti i dodaje ove vrednosti objektu ArrayList:

ArrayList mojaLista = new ArrayList();


mojaLista.Add(1);
mojaLista.Add(2);

int[] brojevi = { 3, 4, 5, 6, 7 };
mojaLista.AddRange(brojevi);
foreach(object x in mojaLista)
{
Console.WriteLine(x);
}
Klasa ArrayList
 RemoveRange metod ima dva parametra – indeks početnog elementa od
koga kreće izbacivanje i broj elemenata koje treba izbaciti.

 Na primer, ako iz prethodne liste (1, 2, 3, 4, 5, 6, 7) želimo da izbacimo


elemente 2, 3 i 4, pisaćemo:

myArray.RemoveRange(1, 3);
Klasa ArrayList
 Za traženje zadate vrednosti koristi se metod Contains.

 Argument je objekat koji se traži


 Povratna vrednost true, ako je objekat nađen u listi, u suprotnom false.

 Metodi IndexOf i LastIndexOf određuju indeks tražene vrednosti.

 IndexOf metod daje indeks prvog pojavljivanja,


 LastIndexOf indeks zadnjeg pojavljivanja tražene vrednosti.
 Oba metoda vraćaju -1 ako vrednost nije nađena u listi.

 BinarySearch metod takođe ima za argument vrednost koja se traži. Ovaj


metod je zgodan za pretragu unutar veoma velikih lista elemenata.

 Sort metod služi za sortiranje elemenata u listi. Brojevi se sortiraju od


najmanjeg, ka najvećem, stringovi i karakteri, alfabetski.
 Ako koristimo ovaj metod svi elementi moraju da budu uporedivi. Npr., ne
možemo u listu da smestimo stringove i cele brojeve, pa onda pozovemo
Sort metod.
Zadaci
 Formirati listu imena unosom sa tastature. Unos se završava pritiskom na
Ctrl+Z (kada pritisnemo Ctrl+Z, sa konzole se ništa ne učitava, tj.
Console.RedLine() == null) . Sortirati listu od A do Z.

 Formirati listu imena unosom sa tastature. Unos se završava pritiskom na


Ctrl+Z. Iz tako formirane liste izbaciti sva pojavljivanja zadatog imena.

 Formirati listu od n slučajnih jednocifrenih brojeva. Odrediti poziciju prvog i


poziciju zadnjeg pojavljivanja maksimalnog u listi.

 Formirati listu od n unetih brojeva. Pomeriti brojeve u listi za jedno mesto


ulevo.

 Formirati listu od n unetih brojeva. Pomeriti brojeve u listi za jedno mesto


udesno.
Formirati listu imena unosom sa tastature.
Unos se završava pritiskom na Ctrl+Z.
Sortirati listu od A do Z.
Formirati listu imena unosom sa tastature.
Unos se završava pritiskom na Ctrl+Z. Iz
tako formirane liste izbaciti sta pojavljivanja
zadatog imena.
Formirati listu od n unetih
brojeva. Pomeriti brojeve u
listi za jedno mesto ulevo.
Generičke liste List<T>
 Kolekcije koje se sastoje od objekata određene klase predstavljaju generičke
liste

 Unutar znakova <> navede se o kojoj se klasi radi


 List<Ucenik> odeljenje = new List<Ucenik>();
 List<Automobil> vozniPark = new List<Automobil>();

 Svaki elemenat liste može se kastovati u objekat navedene klase:

foreach(Ucenik x in odeljenje) Console.WriteLine( x.Prosek() );


gde je Prosek() instancna metoda klase Ucenik

 Generi;ke liste imaju ista svojstva i metode kao i ArrayList (Insert, Remove,
RemoveAt…)

You might also like