MarkoN je napisao/la:Da li neko zna kako ovo tacno funkcionise:
for (Vozilo tmp : listaVozila) {
if (tmp.getNaziv().equals(naziv)) {
ovo tmp mi bas nije jasno.
Kod: Označi sve
else if (sifra.equals("") && !naziv.equals("")) {
for (Vozilo tmp : listaVozila) {
if (tmp.getNaziv().equals(naziv)) {
rezultat += "\n" + tmp.toString();
nadjen = true;
}
Unapred hvala!
Znaci, u svojoj listi imas nekoliko objekata koji su tipa Vozilo.
For petlja koja je gore se jos naziva foreach petlja koja je malo drugacija od for petlje, ali ideja je ista i sluzi za iteriranje kroz svaki element liste.
Znaci,
obicna petlja bi isla nekako ovako:
Kod: Označi sve
int len = listaVozila.length;
for(int i = 0; i < len; i++){
Vozilo tmp = listaVozila.get(i);
doSomethingElse();
}
U gornjem primjeru imas "obicnu" for petlju koja ide o listi, ali sa svakog i-tog mjesta dohvaca objekt tipa Vozilo. Ako si ikad radio u C++u, to mozes poistovjetiti sa ovim:
Kod: Označi sve
int niz[] = new int [N];
for (int i = 0; i < N;i++)
cout << niz[i]<<endl;
gdje je N neki prirodan broj.
For petlja koja tebe zanima je skracena verzija "obicne" i ona zapravo radi ovo:
umjesto da imas iterator i, ovdje ti se for petlja sama brine gdje se nalazi iterator, i u svakom koraku vrati objekt. Znaci, gore si imao
ovdje imas samo Vozilo tmp: listaVozila koje zamjenjuje get metodu.
Python ima slicnu stvar, samo se tamo zove operator "in". I onda mozes imati slucaj:
Kod: Označi sve
for tmp in listaVozila:
doSomething
Gdje na pocetku tmp bude prvi element, pa u sljedecoj iteraciji drugi, itd. ali ono sto je bitno da se sama for petlja brine o dohvacanju elementa, dok u "obicnoj" for petlji, to moras raditi ti.
Evo, nadam se da je sad malo jasnije.