Liste

Nizovi omogućavaju rad sa više promenljivih bez potrebe za pojedinačnim definisanjem svake promenljive. Iako su veoma korisni, oni imaju jedan ozbiljan nedostatak: jednom kada se inicijalizuju, kapacitet im je fiksiran. roširenje ili smanjenje kapaciteta niza zahteva ponovnu inicijalizaciju niza što, u opštem slučaju, dovodi do brisanja svih njegovih elemenata. Liste (“dinamički nizovi”) nemaju ograničen kapacitet pa se elementi mogu dodavati i brisati po !elji. "ista mo!e da sadr!i deset, sto ili bilo koji proizvoljan broj elemenata a da ne postoji potreba za ponovnom inicijalizacijom. #odatna pogodnost je ta što se, pri izbacivanju elementa iz liste, ne ostavljaju $prazna% mesta, pa je lista uvek cela i bez $prekida%. & 'avi postoji nekoliko predefinisanih klasa koje, u stvari, predstavljaju liste. 'edna od njih je i klasa LinkedList. un naziv ove klase je $java.util."inked"ist% i potrebno ju je uvesti u program pre nego što se mo!e koristiti. 'edino ograničenje koje ova klasa uvodi je to da elementi liste ne mogu da budu prostog tipa, već samo objekti. Svi elementi liste moraju biti objekti iste klase. #eklaracija liste se vrši na sledeći način: LinkedList <NazivKlaseElementa> nazivPromenljive; ri deklaraciji, posle naziva klase koja predstavlja listu ("inked"ist) piše se naziv klase čiji objekti će biti elementi liste. Naziv klase elementa se piše izme*u znakova $manje od% ($+%) i $veće od% ($,%). Inicijalizacija liste je veoma slična inicijalizaciji bilo kog objekta. -a obzirom na to da liste nemaju ograničen kapacitet, inicijalizacija je uvek ista: nazivPromenljive = new LinkedList <NazivKlaseElementa> (); .ko se ipak !eli pokušati sa unošenjem elemenata prostog tipa u listu, mogu se koristiti tzv. klase za “obmotavanje” (“wrapper classes”). /ao što im naziv ka!e, ove klase predstavljaju $omotač% oko vrednosti prostog tipa pa, u stvari, imaju atribut koji je prostog tipa i u koji se smešta odgovarajuća vrednost. 0ako, za $double% vrednosti postoji klasa #ouble, za $int% klasa Integer, za $char% klasa 1haracter i za $boolean% klasa $2oolean%. Primer 1 Sledi par primera korišćenja klasa za obmotavanje prostih tipova: Double d = new Double (2 !); "#stem out $rintln(d double%alue()); &nte'er i = new &nte'er (((); "#stem out $rintln(i int%alue()); )*ara+ter + = new )*ara+ter (,-,); "#stem out $rintln(+ +*ar%alue()); .oolean b = new .oolean (false); "#stem out $rintln(b boolean%alue());

5raća poslednji element iz liste. 2roj elemenata liste mo!e da varira. ali se trenutni broj elemenata dobija pozivanjem metode $size%. pretra!ivanje itd. 5raća prvi element iz liste. potrebno je znati i to da metoda $contains% funkcioniše tako što prolazi kroz listu i upore*uje elemente liste sa unetim objektom. potrebno je znati i sledeće. +Naziv/lase. &nosi element u listu i to na poziciju čiji je indeks jednak $i% (indeksi elemenata liste kreću od nule kao kod nizova)."-7 ako ne postoji (pogledati detaljniji opis ni!e u tekstu). +Naziv/lase. 5raća 06&7 ako u listi postoji element koji je isti kao uneti objekat. Svaki element liste ima svoj indeks. /onačno. e) clear () contains (4bject o) !pis #odaje element na kraj liste (radi isto što i . 5raća onaj element iz liste čiji je indeks $i%. #odaje element na početak liste. Na taj način sve metode koje koriste indekse mogu da pronašu tačno mesto u listi na kojem je potrebno uneti neki element. a 3. #odaje element na kraj liste. indeksi počinju od nule.Kao što se može videti. indeks petog elementa jednak 9. /ao i kod nizova. Izbacuje poslednji element iz liste.ede'inisanu metodu toString klase +bject koja vraća String sa podacima o (lanu komisije uz odgovarajući tekst# &ko je vrednost atributa 'unkcija jednaka $)**. “int!alue”. 8amenjuje element čiji je indeks jednak $i% unetim objektom. pa je npr. get (int i) get3irst () get"ast () remove (int i) remove (4bject o) remove3irst () remove"ast () set (int i. Izbacuje prvi element iz liste. izmeniti ga ili izbaciti. /ljučna stvar je ta što ova metoda automatski poziva odgovarajuću “e"uals” metodu da bi uporedila objekte. metoda samo vraća . e) add (int i. -ledi tabela metoda klase "inked"ist sa odgovarajućim opisima. etoda add (+Naziv/lase. e) size () #a bi se u potpunosti razumele navedene metode. vrednost prostog tipa se unosi pri inicijalizaciji objekta odgovarajuće obmotavajuće klase. e) add"ast (+Naziv/lase.dd"ast metoda). dok se ta vrednost preuzima pozivanjem neke od “value” metoda “double!alue”. izbacivanje iz liste. Primer 2 $apraviti javnu klasu ClanKomisije koja ima: ● %rivatni &tribut ime%rezime# ● %rivatni &tribut 'unkcija# %o(etna vrednost ovog atributa je $)**# ● +dgovarajuće javne get i set metode za ova dva atributa# $edozvoljene vrednosti za prvi atribut su $)** i prazan String “”"# ) slu(aju unosa nedozvoljenih vrednosti. 5raća trenutni broj elemenata u listi. e) add3irst (+Naziv/lase. Izbacuje onaj element iz liste čiji je indeks $i%. potrebno je ispisati poruku o grešci na ekranu# ● . Izbacuje onaj element iz liste koji je jednak unetom objektu. & pitanju je “e"uals” metoda klase koja je uneta kao element liste. “char!alue” i “boolean!alue”"# /lasa "inked"ist sadr!i više gotovih metoda koje slu!e za unošenje u listu. 2riše sve elemente iz liste.

else "#stem out $rintln(56orate uneti ime5).lanKomisije# ● 3avni konstruktor koji inicijalizuje atribut clanovi# ● 3avnu metodu koja kao ulazni parametar prima objekat klase .lanKomisije i izbacuje ga iz komisije# ● 3avnu metodu koja na ekranu ispisuje sastav komisije# $apraviti javnu klasu TestKomisije koja kreira jedan objekat klase Komisija i u njega unosi podatke o dva (lana komisije: “%era %eric” 5 predsednik i “/ika /ikic”# 6spisati sastav komisije# public class )lanKomisije / private "trin' imePrezime. else return 5&me +lana8 59imePrezime.)1 ako je vrednost atributa ime%rezime jednaka imenu i prezimenu (lana komisije koji je unet kao ulazni argument. 1 public void set7unk+ija("trin' 0unk+ija) / this 0unk+ija = 0unk+ija. potrebno je ispisati poruku o tome da je ta osoba već (lan komisije# ● 3avnu metodu sprovedi%ropis koja proverava da li je u komisiji pet (lanova ili manje# &ko u komisiji ima više od 4 (lanova. private "trin' 0unk+ija = null.lanaKomisije koja kao ulazni parametar dobija objekat klase . ali se smatra da će se zaista unositi objekti klase .lanKomisije i unosi ga u listu samo ako u listi ne postoji (lan komisije sa istim imenom i prezimenom# ) suprotnom. 1 public void set&mePrezime("trin' imePrezime) / if (imePrezime2=null 33 2imePrezime e4uals(55)) this imePrezime = imePrezime. public "trin' 'et&mePrezime() / return imePrezime.ede'inisanu metodu e-uals klase +bject koja kao ulazni argument prima objekat klase +bject. 1 public "trin' to"trin'()/ if (0unk+ija2=null) return 5&me +lana8 59imePrezime95 7unk+ija8 590unk+ija.lanKomisije# /etoda vraća 0. vraćaju se svi podaci o (lanu komisije# .● podatke o imenu i prezimenu (lana komisije# &ko nije $)**. . 1 public boolean e4uals(:bje+t o)/ )lanKomisije +k = ()lanKomisije)(o). a u suprotnom 2&*S1# $apraviti javnu klasu Komisija koja ima: ● %rivatni atribut clanovi koji predstavlja listu objekata klase . metoda briše listu i na ekranu ispisuje poruku o tome da je komisija nevažeća# ● 3avnu metodu razresi. 1 public "trin' 'et7unk+ija() / return 0unk+ija.

else return false.if (imePrezime e4uals(+k 'et&mePrezime())) return true. 1 public void is$isi()/ for (int i=<. public Komisija()/ +lanovi = new LinkedList<)lanKomisije>(). +k? set7unk+ija(5$redsednik5). 1 1 public class .a osoba se ve+ nalazi u komisiji5).estKomisija / public static void main("trin'=> ar's) / Komisija k = new Komisija(). public class Komisija / private LinkedList <)lanKomisije> +lanovi. 1 1 public void razresi)lanaKomisije()lanKomisije +k)/ +lanovi remove(+k). +k? set&mePrezime(5Pera Peri+5). )lanKomisije +k? = new )lanKomisije(). . else +lanovi add(+k). "#stem out $rintln(5Komisija je nevaze+a5).i99) "#stem out $rintln(+lanovi 'et(i)). 1 public void unesi()lanKomisije +k)/ if (+lanovi +ontains(+k)) "#stem out $rintln(5.i<+lanovi size(). 1 public void s$rovediPro$is()/ if (+lanovi size()>()/ +lanovi +lear(). 1 1 import java util LinkedList.

ime. • 'avnu metodu da"i'e&"isti koja kao ulazni argument prima objekat klase -tudent i proverava da li se student .lanaKomisije” se poziva ona “remove” metoda koja pronalazi element iz liste koji je jednak unetom objektu# 6 ovde se jednakost proverava automatskim pozivanjem “e-uals” metode klase . Nedozvoljene vrednosti za ocenu su svi brojevi manji od C ili veći od ?<. $<<<?. a u suprotnom 3.lanKomisije# ) metodi “ispisi” se vidi kako se prolazi kroz listu element po element# %ojedina(nim elementima liste se pristupa preko indeksa 5 pozivanjem metode “get” kojoj se prosle7uje taj indeks# Kao i kod nizova i kod lista indeksi kreću od nule# Zadaci #adatak $ Napraviti javnu klasu Student koja ima: • rivatni atribut brojIndeksa koji je dat u formi -tringa: $::::. • 4dgovarajuće javne get i set metode za ova tri atributa. • 6edefinisanu metodu eDuals klase 4bject koja kao ulazni argument prima objekat klase 4bject. • rivatni atribut ime. • 6edefinisanu metodu to-tring klase 4bject koja vraća -tring sa svim podacima o studentu (broj indeksa. ako je taj broj veći od 4.BB%."-7. $<<=>. & slučaju pokušaja unosa ovih nedozvoljenih vrednosti potrbno je ispisati poruku o grešci na ekranu. • 'avni konstruktor koji inicijalizuje ovu listu (atribut studenti). 1 1 Klasa Komisija ima privatni atribut “clanovi” koji predstavlja listu objekata klase . inicijalizacija ove liste se vrši u okviru konstruktora# /etoda “unesi” unosi (lana komisije u listu pozivanjem metode “add”# %re unošenja. • rivatni atribut ocena. k unesi(+k?).lanKomisije# Kao što se može videti. briše sve elemente iz liste pozivanjem metode “clear”"# 6zbacivanje elementa iz liste se vrši pozivanjem neke od “remove” metoda# ) okviru metode “razresi. Nedozvoljene vrednosti za ime. k unesi(+k2). prezime i ocena) uz odgovarajuću poruku.<A%. $<?@A. Eetoda vraća 06&7 ako je broj indeksa jednak broju indeksa studenta koji je unet kao ulazni argument.lanKomisije da proveri jednakost svakog elementa sa unetim objektom# /etoda “sprovedi%ropis” prvo proverava broj (lanova komisije pozivanjem metode “size”" pa. Napraviti javnu klasu %spitnaLista koja ima: • rivatni atribut studenti koji predstavlja listu objekata klase -tudent.<>%. ali se smatra da će se zaista unositi objekti klase -tudent. npr. proverava se da li lista možda već sadrži (lana sa istim imenom i prezimenom# /etoda “contains” vrši ovu proveru tako prolazi kroz listu element po element i automatski poziva metodu “e-uals” klase .22% gde je :::: broj indeksa a 22 godina upisa.)lanKomisije +k2 = new )lanKomisije(). • rivatni atribut prezime. +k2 set&mePrezime(56ika 6iki+5). prezime i broj indeksa se null -tringovi. k is$isi().

1 public void set:+ena(int o+ena) / if (o+ena >=( 33 o+ena<=?<) this o+ena = o+ena. 'avnu metodu dodaj-tudentaNaEesto koja kao ulazni argument prima objekat klase -tudent i redni broj mesta u listi na koje potrebno ubaciti datog studenta.ko je lista prazna. potrebno je ispisati poruku o grešci na ekranu. <?@A. 'avnu metodu dodaj-tudentaNa/raj koja kao ulazni argument prima objekat klase -tudent i dodaje ga u listu i to na kraj liste. public int 'et:+ena() / return o+ena. 'avnu metodu izbrisi-tudenta koja kao ulazni argument prima objekat klase -tudent i briše iz liste studenta sa istim brojem indeksa. 'avnu metodu obrisi"istu koja briše sve studente iz liste. <<@?. . 'avnu metodu izbrisi-tudenta-aEesta koja kao ulazni argument dobija redni broj i briše studenta iz liste koji je na tom rednom broju u listi.ko je bilo koji od ovih uslova prekoračen. else "#stem out $rintln(5@reska5).ko je bilo koji od ovih uslova prekoračen. . 2risanje se vrši samo ako lista nije prazna i ako je redni broj u opsegu < F du!ina listeG?. potrebno je ispisati poruku o tome.ko je bilo koji od ovih uslova prekoračen.ko je bilo koji od ovih uslova prekoračen.<C 'ovan 'ovanovic H.• • • • • • • • • • • • • • • sa istim brojem indeksa već nalazi u listi. "trin' ime. potrebno je ispisati poruku o grešci na ekranu. .ko je lista prazna. 2risanje se vrši samo ako lista nije prazna.roj&ndeksa() / return broj&ndeksa. Ispisati na ekranu prosečnu ocenu i sve stare studente. 'avnu metodu dodaj-tudentaNa očetak koja kao ulazni argument prima objekat klase -tudent i dodaje ga u listu i to na početak liste. 'avnu metodu ispisi#esetke koja na ekranu ispisuje samo podatke o onim studentima koji su na ispitu dobili ocenu ?<. int o+ena. metoda vraća 06&7 a u suprotnom 3. 'avnu metodu izbrisi-tudenta-a/raja koja nema ulazne argumente i briše poslednjeg studenta iz liste. 'avnu metodu ispisi-tare-tudente koja ispisuje podatke samo onih studenata koji su ?BBB. 'avnu metodu izbrisi-tudenta-a ocetka koja nema ulazne argumente i briše prvog studenta iz liste."-7. 1 public "trin' 'et. potrebno je ispisati poruku o tome. 'avnu metodu prosek koja izračunava i vraća prosečnu ocenu na ispitu. #odavanje se vrši samo ako ulazni argument nije null i ako u listi ne postoji student sa istim brojem indeksa. . "trin' $rezime. 2risanje se vrši samo ako lista nije prazna.ko je lista prazna.BB -tevanovic Ivana ?<.ko se nalazi. 'avnu metodu ispisi rvog koja na ekranu ispisuje podatke prvog studenta iz liste.roj&ndeksa("trin' broj&ndeksa) / if (broj&ndeksa 2= null) this broj&ndeksa = broj&ndeksa.<= etar etrovic =. 'e(enje) public class "tudent / private private private private "trin' broj&ndeksa. 'avnu metodu ispisi oslednjeg koja na ekranu ispisuje podatke poslednjeg studenta iz liste. #odavanje se vrši samo ako ulazni argument nije null i ako u listi ne postoji student sa istim brojem indeksa. #odavanje se vrši samo ako ulazni argument nije null. . . potrebno je ispisati poruku o grešci na ekranu. . 'avnu metodu dodaj-tudenta koja kao ulazni argument prima objekat klase -tudent i dodaje ga u listu. 1 public void set. godine upisali fakultet. else "#stem out $rintln(5@reska5). 2risanje se vrši samo ako ulazni argument nije null i ako u listi postoji student sa istim brojem indeksa. . potrebno je ispisati poruku o grešci na ekranu. .ko je bilo koji od ovih uslova prekoračen.ko bilo koji od ova dva uslova prekoračen. #odavanje se vrši samo ako ulazni argument nije null i ako u listi ne postoji student sa istim brojem indeksa. njihove podatke na ekranu. . ako u listi ne postoji student sa istim brojem indeksa i ako je uneti redni broj u rasponu < F du!ina listeG?.ko je lista prazna. potrebno je ispisati poruku o grešci na ekranu. potrebno je ispisati poruku o grešci na ekranu. . potrebno je ispisati poruku o grešci na ekranu. potrebno je ispisati poruku o grešci na ekranu. 'avnu metodu ispisi koja ispisuje sve studente iz liste tj. . Napraviti javnu klasu &est%spitnaLista koja kreira jedan objekat klase Ispitna"ista i unosi u njega sledeće studente: <<<?.

public class &s$itnaLista / private LinkedList <"tudent> studenti. else "#stem out $rintln(5@reska5). 1 1 import java util LinkedList. 1 public void set&me("trin' ime) / if (ime 2= null) this ime = ime.roj&ndeksa())) return true. else "#stem out $rintln(5@reska5). 1 public boolean daLiAeBListi("tudent s)/ return studenti +ontains(s). 1 public boolean e4uals(:bje+t o)/ "tudent s = ("tudent)(o). 1 public void dodaj"tudenta("tudent s)/ if (s2=null 33 2studenti +ontains(s)) studenti add(s). else return false. 1 public void setPrezime("trin' $rezime) / if ($rezime 2= null) this $rezime = $rezime.1 public "trin' 'et&me() / return ime. else "#stem out $rintln(5@reska5). else "#stem out $rintln(5@reska5).r ind 8 59broj&ndeksa95 &me8 59ime95 Prezime8 59 $rezime95 :+ena8 59o+ena. public &s$itnaLista()/ studenti = new LinkedList <"tudent> (). else "#stem out $rintln(5@reska5). 1 public "trin' 'etPrezime() / return $rezime. 1 public void dodaj"tudentaNaPo+etak("tudent s)/ if (s2=null 33 2studenti +ontains(s)) studenti add7irst(s). if (broj&ndeksa e4uals(s 'et. . 1 public void dodaj"tudentaNaKraj("tudent s)/ CC6etode add i addLast su ekvivalentne jer obe dodaju CCelement na kraj liste if (s2=null 33 2studenti +ontains(s)) studenti addLast(s). 1 public "trin' to"trin'()/ return 5.

else "#stem out $rintln(5@reska5). 1 public void is$isiPoslednje'()/ if (studenti size()><) "#stem out $rintln(studenti 'etLast()). i99) "#stem out $rintln(studenti 'et(i)). else "#stem out $rintln(5@reska5). else "#stem out $rintln(5@reska5). i99) if (studenti 'et(i) 'et:+ena() == ?<) .r). i< studenti size().1 public void dodaj"tudentaNa6esto("tudent sD int red.r>=< 33 red.r)/ if (studenti size()>< 33 red.r)/ CC6etoda add(intD"tudent) unosi element na iEtu $ozi+iju C u listu a svi ostali elementi liste se $omeraju za jedno CCmesto udesno &ndeksi elemenata liste $o+inju od nule CCDuzina liste se dobija $ozivom metode size() if (s2=null 33 2studenti +ontains(s) 33 red. 1 public void izbrisi"tudenta"aKraja()/ if (studenti size()><) studenti removeLast(). 1 public void izbrisi"tudenta("tudent s)/ if (s2=null 33 studenti +ontains(s)) studenti remove(s). 1 public void is$isiPrvo'()/ if (studenti size()><) "#stem out $rintln(studenti 'et7irst()). else "#stem out $rintln(5@reska5). 1 public void izbrisi"tudenta"aPo+etka()/ if (studenti size()><) studenti remove7irst(). else "#stem out $rintln(5Lista studenata je $razna5).rDs).r<studenti size()) studenti add(red.r>=< 33 red. else "#stem out $rintln(5Lista studenata je $razna5). 1 public void is$isi()/ for (int i=<. 1 public void obrisiListu()/ studenti +lear(). else "#stem out $rintln(5@reska5). i< studenti size(). 1 public void is$isiDesetke()/ for (int i=<. 1 public void izbrisi"tudenta"a6esta(int red.r<studenti size()) studenti remove(red.

1 return sumaCstudenti size(). s! set. "tudent s? = new "tudent(). s? set. s! set:+ena(H). public void is$isi"tare"tudente()/ for (int i=<. il dodaj"tudenta(s!). s? setPrezime(5"tevanovi+5). public double $rosek()/ double suma = <. • rivatni atribut model. "tudent s2 = new "tudent(). i< studenti size(). . s! set&me(5Aovan5). s2 set. "tudent s! = new "tudent().1 "#stem out $rintln(studenti 'et(i)). if ('od e4uals(5FF5)) "#stem out $rintln(studenti 'et(i)). for (int i=<. il dodaj"tudenta(s2).roj&ndeksa(5<<2?C<(5). "#stem out $rintln(5Prose+na o+ena je8 59il $rosek()). s2 set&me(5Petar5).roj&ndeksa().roj&ndeksa(5<?2!C<G5). i99)/ "trin' br&nd = studenti 'et(i) 'et. 1 1 #adatak * Napraviti javnu klasu otocikl koja ima: • rivatni atribut marka. s? set&me(5&vana5). s! setPrezime(5Aovanovi+5). il is$isi"tare"tudente(). "trin' 'od = br&nd substrin'((). s2 setPrezime(5Petrovi+5). • 4dgovarajuće get i set metode za ove atribute.est&s$itnaLista / public static void main("trin' ar's=>)/ &s$itnaLista il = new &s$itnaLista(). s? set:+ena(?<). i< studenti size(). s2 set:+ena(G). il dodaj"tudenta(s?). i99) suma = suma 9 studenti 'et(i) 'et:+ena(). 1 1 1 public class .roj&ndeksa(5<<<?CFF5). • rivatni atribut kubikaza koji predstavlja broj kubika motocikla (ceo broj).

• 'avnu metodu ispisiNajveci koja na ekranu ispisuje podatke o motociklu sa najvećom kubikazom. 1 public boolean e4uals(:bje+t o)/ 6oto+ikl m = (6oto+ikl)(o). $/aIasaki% G $76 C% G 9BH i $Konda% G $12 >C< 3% G >9H. otrebno je prva dva objekta ubaciti u bazu i ispisati sadr!aj baze. 2risanje se vrši samo ako u bazi postoji isti motocikl. &nošenje se vrši samo ako uneta vrednost nije null i ako u bazi već ne postoji isti motocikl. ali se smatra da će se zaista unositi objekti klase Eotocikl. 1 public "trin' 'et6arka() / return marka. 'e(enje) public class 6oto+ikl / private "trin' marka. private "trin' model. 1 public void set6arka("trin' marka) / this marka = marka. 6edefinisanu eDuals metodu klase 4bject koja kao ulazni argument prima objekat klase 4bject. 1 public void set6odel("trin' model) / this model = model. • 'avnu metodu da"i'e&2azi koja kao ulazni argument prima objekat klase Eotocikl i proverava da li se isti motocikl već nalazi u bazi. onovo na ekranu ispisati sadr!aj baze i ispisati sve motocikle marke $/aIasaki%. private int kubikaza. model i kubikaza jednaka marki. • 'avni konstruktor koji inicijalizuje atribut motocikli. Napraviti javnu klasu +aza otocikala koja ima: • rivatni atribut motocikli koji predstavlja listu objekata klase Eotocikl. 4va metoda vraća true ako je vrednost atributa marka. • 'avnu metodu prosecna/ubikaza koja izračunava i vraća prosečnu kubika!u motocikala iz baze.• • 6edefinisanu to-tring metodu klase 4bject koja vraća -tring sa svim podacima o motociklu uz odgovarajuću poruku. • 'avnu metodu unesi&2azu koja kao ulazni argument prima objekat klase Eotocikl i unosi ga u listu. potrebno je proveriti da li se treći motocikl već nalazi u bazi i izbaciti ga iz baze. public int 'etKubikaza() / return kubikaza. • 'avnu metodu maJ/ubikaza koja vraća najveću kubika!u motocikla iz liste. • 'avnu metodu ispisi koja na ekranu ispisuje podatke o svim motociklima. • 'avnu metodu ispisi/aIasaki koja ispisuje na ekranu podatke samo onih motocikala koji su marke $/aIasaki%. & suprotnom. metoda vraća false. 1 public "trin' to"trin'()/ return 56arka8 59marka95 6odel8 59model95 Kubikaza8 59kubikaza. modelu i kubikazi motocikla koji je unet kao ulazni argument. • 'avnu metodu izbaciIz2aze koja kao ulazni argument prima objekat klase Eotocikl i briše ga iz baze. Nakon toga. 1 public "trin' 'et6odel() / return model. 1 public void setKubikaza(int kubikaza) / this kubikaza = kubikaza. Napraviti klasu &est+aza otocikala koja kreira objekat klase 2azaEotockala i tri objekta klase Eotocikl :$Konda% G $12 >C< 3% G >9H. if (marka e4uals(m 'et6arka())33 .

1 public void is$isiKaJasaki()/ for (int i=<.aj moto+ikl se ne nalazi u bazi5). i<moto+ikli size(). 1 public int maKKubikaza()/ int maKK = <.azi(m)) "#stem out $rintln(5. 1 public void is$isiNajve+i()/ . 1 public boolean daLiAeB. 1 1 public void is$isi()/ for (int i=<.aj moto+ikl se ve+ nalazi u bazi5).azi(m) moze da stoji i direktno CCmoto+ikli +ontains(m) if (daLiAeB. else return false. i<moto+ikli size(). else moto+ikli add(m). for (int i=<. i<moto+ikli size().azi(6oto+ikl m)/ return moto+ikli +ontains(m). 1 public void izba+i&z. else / moto+ikli remove(m).i99) "#stem out $rintln(moto+ikli 'et(i)).azu(6oto+ikl m)/ CCBmesto daLiAeB. return maKK. public .aza6oto+ikala()/ moto+ikli = new LinkedList <6oto+ikl> (). 1 public void unesiB. i<moto+ikli size().i99) if (moto+ikli 'et(i) 'et6arka() e4uals(5KaJasaki5)) "#stem out $rintln(moto+ikli 'et(i)). return sumaCmoto+ikli size(). import java util I.i99) suma 9= moto+ikli 'et(i) 'etKubikaza(). 1 public int $rose+naKubikaza()/ int suma = <.1 1 (model e4uals(m 'et6odel()))33 kubikaza == m 'etKubikaza()) return true.azi(m)) "#stem out $rintln(5.i99) if (moto+ikli 'et(i) 'etKubikaza() > maKK) maKK = moto+ikli 'et(i) 'etKubikaza(). for (int i=<.aza6oto+ikala / private LinkedList <6oto+ikl> moto+ikli.aze(6oto+ikl m)/ if (2daLiAeB. public class .

b unesiB. . 1 1 #adatak .aza6oto+ikala b = new . m! setKubikaza(MNH).azi(m!)). m! set6arka(5Londa5). m2 set6odel(5E. • rivatni atribut broj oena (ceo broj) koji predstavlja broj poena koji je ta reli ekipa osvojila u šampionatu. m! set6odel(5). • 4dgovarajuće javne get i set metode za ova dva atributa.aza6oto+ikala / public static void main("trin'=> ar's)/ .int maKK = maKKubikaza(). i<moto+ikli size(). M(< 75). CC6oze i bez break naredbeD ali je ovako metoda e0ikasnija jer CCkad nadje od'ovaraju+i moto+iklD is$isuje 'a i ne $roverava dalje CC E break naredba $rekida 0or $etlju break. for (int i=<. m2 set6arka(5KaJasaki5). b is$isiKaJasaki(). b is$isi(). "#stem out $rintln(5Da li $ostoji 59b daLiAeB.(5). b izba+i&z.aza6oto+ikala(). 6oto+ikl m2 = new 6oto+ikl(). m? set6odel(5). 1 1 1 public class .azu(m?). 6oto+ikl m? = new 6oto+ikl(). a broj poena mora da bude nula ili veći od nule. M(< 75). b is$isi().ko je bilo koje od ovih ograničenja prekoračeno.aze(m!). ispisati poruku o grešci na ekranu.i99) if (moto+ikli 'et(i) 'etKubikaza() == maKK)/ "#stem out $rintln(moto+ikli 'et(i)).azu(m2). 6oto+ikl m! = new 6oto+ikl(). • 6edefinisanu to-tring metodu klase 4bject koja vraća -tring u kome se nalaze svi podaci o ekipi uz . Ime ekipe ne mo!e da bude null.est. b unesiB. Napraviti javnu klasu 'eli-kipa koja ima: • rivatni atribut ime7kipe. m? set6arka(5Londa5). m? setKubikaza(MNH). m2 setKubikaza(NFH).

unosi se na kraj liste. 1 public "trin' to"trin'()/ return 5Eki$a8 59imeEki$e95 Poeni8 59brojPoena. $Eitsubishi% 9 poena. Ispisati na ekranu celu listu u običnom i obrnutom redosledu.rojPoena(int brojPoena) / if (brojPoena >= <) this brojPoena = brojPoena. $3ord% C< poena. ova metoda vraća true ako je vrednost atributa ime7kipe jednaka imenu ekipe objekta koji je unet kao ulazni argument. $-koda% ?C poena i $-eat% < poena. else "#stem out $rintln(5@reska5). $5L% C poena. pa tek onda uneti objekat koji predstavlja novi broj poena. otrebno je ispisati i poziciju svake ekipe pri čemu pozicije kreću od ? a ne od nula. private int brojPoena. 1 public boolean e4uals (:bje+t o)/ if (o instanceof -eliEki$a) / . • 'avnu metodu koja na ekranu ispisuje deset najboljih reli ekipa zajedno sa informacijom o njihovoj poziciji. novu ekipu treba uneti tako da lista i posle unošenja ostane ure*ena.• odgovarajuću poruku. otrebno je iz liste obrisati objekat klase 6eli7kipa koji predstavlja istu ekipu. ispisuje se poruka o grešci. a zatim prvih deset ekipa. 1 public "trin' 'et&meEki$e() / return imeEki$e. 4va metoda kao ulazni argument prima objekat klase 6eli7kipa i unosi ga u listu samo ako u listi već ne postoji ekipa sa istim imenom i ako ulazni argument nije null. otrebno je ispisati i poziciju svake ekipe pri čemu pozicije kreću od ? a ne od nula. 4vo se vrši tako da lista ostane ure*ena i posle zamene. $6enault% @< poena. $-ubaru% A< poena. Napraviti javnu klasu 'eli'angLista koja predstavlja listu rezultata reli ekipe. . 2roj pozicije kreće od ? a ne od nula. rvo.udi% A< poena. Napraviti javnu klasu &est'eli'angLista koja kreira jedan objkat klase 6eli6ang"ista i u njega unosi sledeće podatke o ekipama: $. $2EL% 9< poena.rojPoena() / return brojPoena.ko ekipa ima najmanje poena od svih ekipa. onovo ispisati celu listu na ekranu. pa ako nije vratiti false. 4va klasa ima: • rivatni atribut ekipe koji predstavlja listu objekata klase 6eli7kipa. potrebno je proveriti da li je zaista unet objekat klase 6eli7kipa. 1 public void set&meEki$e("trin' imeEki$e) / if (imeEki$e 2= null) this imeEki$e = imeEki$e. • 'avnu metodu koja na ekranu ispisuje celu reli rang listu ali u obrnutom redosledu F prvo se ispisuju najslabije ekipe. • 'avnu metodu koja na ekranu ispisuje celu reli rang listu. $"ancia% @A poena. metoda vraća false. public int 'et. ali sa starim brojem poena.ko je unet objekat klase 6eli7kipa. & suprotnom. else "#stem out $rintln(5@reska5). & suprotnom. 8nači. . • 'avnu metodu koja menja poziciju reli ekipe na listi. • 'avnu metodu za unošenje reli ekipe u listu. 8amena se vrši samo ako je uneti objekat različit od null i ako se istoimena ekipa već nalazi u listi. 1 public void set. na drugom prva ekipa sa manje poena itd. Eetoda kao ulazni argument dobija objekat klase 6eli7kipa koji sadr!i novi broj poena za datu ekipu. $ eugeot% AA poena. ali se smatra da će se zaista unositi objekti klase 6eli7kipa. 4vaj atribut je potrebno inicijalizovati odmah. 6edefinisanu eDuals metodu klase 4bject koja kao ulazni argument prima objekat klase 4bject. 8ameniti podatke o $2EL% ekipi tako da novi broj poena bude CC. &nošenje se vrši tako da se ne poremeti opadajući poredak: lista je ure*ena tako da se na prvom mestu nalazi ekipa sa najviše poena. 'e(enje) public class -eliEki$a / private "trin' imeEki$e.

rojPoena()<r 'et. . public void is$isi:brnuto()/ for(int i=eki$e size()E?.1 else 1 1 -eliEki$a r=(-eliEki$a)(o).i99) "#stem out $rintln((i9?)95 1 59eki$e 'et(i)). 1 public void is$isi()/ for(int i=<. break. 1 else "#stem out $rintln(5@reska5). if (imeEki$e e4uals(r 'et&meEki$e())) return true.i99) "#stem out $rintln((i9?)95 1 59eki$e 'et(i)).iEE) "#stem out $rintln((i9?)95 59eki$e 'et(i)). i<eki$e size().i99) if (eki$e 'et(i) 'et. 1 CCOko eki$a ima najmanje $oena od svi* sa listeD ona ne+e biti CCuba+ena u okviru 0or $etlje jer nije nadjena nijedna eki$a sa CCmanje $oena od nje Pato se na kraju $roverava da li je eki$a CCuba+enaD $a ako nijeD unosi se na kraj liste if (2eki$e +ontains(r)) eki$e addLast(r). 1 public void is$isiDesetNajbolji*()/ for(int i=<. public void unesiEki$u(-eliEki$a r)/ if (r2=null 33 2eki$e +ontains(r))/ for (int i=<. public class -eli-an'Lista / private LinkedList <-eliEki$a> eki$e = new LinkedList <-eliEki$a>(). public void zameni (-eliEki$a r)/ if (r2=null 33 eki$e +ontains(r))/ eki$e remove(r).i<?<.i>=<. 1 else "#stem out $rintln(5@reska5). unesiEki$u(r).i<eki$e size(). import java util LinkedList. else return false. return false.rojPoena())/ CCEki$a se unosi na iEto mesto 'de je $rva eki$a koja CCima manje $oena od nje "ve ostale eki$e se $omeraju CCza jedno mesto nize na listi eki$e add(iD r).

rojPoena(<). re?< set&meEki$e(5"koda5). reN set. reH set&meEki$e(56itsubis*i5). unesiEki$u(reF). re( set. -eliEki$a reF = new -eliEki$a(). -eliEki$a reH = new -eliEki$a().6Q5). reF set&meEki$e(5Lan+ia5). re?< set. reF set. reG set&meEki$e(5Peu'eot5). -eliEki$a re2 = new -eliEki$a(). -eliEki$a reM = new -eliEki$a(). -eliEki$a re! = new -eliEki$a(). unesiEki$u(reH). unesiEki$u(re!). re2 set. reM set&meEki$e(57ord5). re( set&meEki$e(5"ubaru5). re? set&meEki$e(5Oudi5). -eliEki$a reG = new -eliEki$a(). unesiEki$u(re2). r r r r r r r r r r unesiEki$u(re?). reM set. re! set&meEki$e(5-enault5).rojPoena(!<).rojPoena(?(). unesiEki$u(reN).rojPoena(2!). -eliEki$a reN = new -eliEki$a().rojPoena((<). -eliEki$a re?< = new -eliEki$a(). re?? set&meEki$e(5"eat5). unesiEki$u(reG).est-eli-an'Lista / public static void main("trin'=> ar's) / -eli-an'Lista r = new -eli-an'Lista(). -eliEki$a re( = new -eliEki$a(). re2 set&meEki$e(5.rojPoena(N<).rojPoena(N).rojPoena(!!). reN set&meEki$e(5%Q5).rojPoena(!<).1 1 public class . unesiEki$u(re?<). reG set. re? set. re! set. -eliEki$a re? = new -eliEki$a(). re?? set. -eliEki$a re?? = new -eliEki$a().rojPoena(2<). reH set. . unesiEki$u(re(). unesiEki$u(reM).rojPoena(().

& suprotnom. potrebno je na ekranu ispisati poruku o grešci.rojPoena(((). & tom slučaju -tring treba da sadr!i zemlju porekla ime. & slučaju unošenja nedozvoljenih vrednosti."I3I/45.#% $1olin 3irth% @<.#. ali se smatra da će se zaista unositi objekti klase 0akmicar. . prezime. ispisuje se koliko ih ima. • 6edefinisanu metodu to-tring klase 4bject koja vraća -tring sa svim podacima o takmičaru ako je vreme koje je ostvario veće od nule.r unesiEki$u(re??). • 6edefinisanu eDuals metodu klase 4bject koja kao ulazni argument prima objekat klase 4bject. "ista rezultata je ure*ena tako da se na početku liste nalazi takmičar sa najmanjim vremenom pa za njim slede takmičari sa većim vremenom organzovani u rastućem poretku. $-. r is$isi:brnuto().6Q5). .ko je uneto vreme nula. &nošenje se vrši samo ako ulazni argument nije null i ako već ne postoji u listi.N.?@. Napraviti javnu klasu &estLista'ezultata koja kreira jedan objekat klase "ista6ezultata i u njega unosi podatke o sledećim takmičarima: $Mrcka% $1ostas appas% @A.ko je unet objekat klase 0akmicar."-7 ako rekord nije oboren. • 'avnu metodu da"i'e4boren6ekord koja kao ulazni argument prima vreme koje predstavlja svetski rekord. • rivatni atribut vreme koji predstavlja vreme koje je takmičar ostvario na takmičenju izra!eno u sekundama (realan broj). finaliste a ona i reprezentativce -.ko je vreme jednako nuli to znači da je takmičar diskvalifikovan. • 'avnu metodu ispisi3inaliste koja ispisuje osam najboljih takmicara koji će da idu u finale. &nošenje je potrebno izvršiti tako da lista ostane ure*ena i posle unošenja. • 'avni konstruktor koji inicijalizuje listu. .>H i $-. Nedozvoljene vrednosti za zemlju i ime rezime su null -tringovi. Ispisati i poruku o tome da li je oboren svetski rekord od ?B. Napraviti javnu klasu &akmicar koja ima: • rivatni atribut zemlja koji predstavlja dr!avu porekla takmičara. ri pore*enju treba razmatrati samo one takmičare koji nisu diskvalifikovani. $0urska% $Eehmed 0urk% #I-/5.? .N. • 4dgovarajuće javne get i set metode za ove atribute. ispisuje se poruka o grešci. $6usija% $Ivan Ivanovic% ?B. . smatra se da je takmičar diskvalifikovan. & suprotnom.#% $'ack -tone% #I-/5. r is$isi(). Ispisati sve takmičare.?. • rivatni atribut ime rezime. rvo. -eliEki$a re?2 = new -eliEki$a(). potrebno je proveriti da li je zaista unet objekat klase 0akmicar. metoda vraća false. $5elika 2ritanija% $'ohn ale% @@.ko se me*u prvih osam na*e neki takmičar koji je diskvalifikovan. . r is$isi(). Napraviti javnu klasu Lista'ezultata koja ima: • rivatni atribut takmicari koji predstavlja listu takmičara. metoda ga ne ispisuje. 5reme mora da bude nula ili veće od nule."I3I/45. • 'avnu metodu unesi0akmicara koja kao ulazni argument dobija objekat klase 0akmicar i unosi ga u listu. re?2 set&meEki$e(5. . Eetoda vraća 06&7 ako je neki takmičar oborio rekord a 3. r zameni(re?2).<C. • 'avnu metodu ispisi koja ispisuje na ekranu celu listu rezultata zajedno sa pozicijama takmičara (pozicije kreću od ?). r is$isiDesetNajbolji*(). pa ako nije vratiti false.:P ?<5). ova metoda vraća true ako je vrednost atributa zemlja i ime rezime jednaka zemlji i imenu i prezimenu takmičara koji je unet kao ulazni argument. i reč diskvalifikovan. "#stem out $rintln(5.ko u listi nema osam takmičara. re?2 set. 1 1 #adatak . Na kraju liste se nalaze takmičari koji su diskvalifikovani. • 'avnu metodu ispisi6eprezentativce koja kao ulazni argument prima ime zemlje i ispisuje rezultate svih njenih reprezentativaca.

akmi+ar> takmi+ari. else "#stem out $rintln(5@reska5). public Lista-ezultata()/ .akmi+ar / private "trin' zemlja.akmi+ar) / . else "#stem out $rintln(5@reska5). if (zemlja e4uals(t 'etPemlja())33 imePrezime e4uals(t 'et&mePrezime())) return true. public class Lista-ezultata / private LinkedList <. 1 public double 'et%reme() / return vreme. 1 public void set&mePrezime("trin' imePrezime) / if (imePrezime 2= null) this imePrezime = imePrezime.akmi+ar)(o). 1 public "trin' 'etPemlja() / return zemlja.akmi+ar t=(. 1 public void set%reme(double vreme) / if (vreme >= <) this vreme = vreme. public "trin' 'et&mePrezime() / return imePrezime. 1 else return false. 1 public "trin' to"trin'()/ if (vreme > <) return 5Pemlja8 59zemlja95 .akmi+ar8 59imePrezime9 5 D&"K%OL&7&K:%ON5.'e(enje) public class . 1 1 import java util LinkedList. 1 public void setPemlja("trin' zemlja) / if (zemlja 2= null) this zemlja = zemlja. private double vreme. private "trin' imePrezime.akmi+ar8 59imePrezime9 5 %reme8 59vreme. 1 public boolean e4uals (:bje+t o)/ if (o instanceof . else "#stem out $rintln(5@reska5). else return 5Pemlja8 59zemlja95 . else return false.

i<maK. 1 public void is$isi-e$rezentativ+e("trin' zemlja)/ for (int i=<. 1 1 public class . .akmi+ar t)/ if (t2=null 33 2takmi+ari +ontains(t))/ CCOko je takmi+ar diskvali0ikovanD dodaje se CCna kraj liste if (t 'et%reme()==<) takmi+ari addLast(t).akmi+ara (.i99) "#stem out $rintln((i9?)95 59takmi+ari 'et(i)). public void unesi.estLista-ezultata / public static void main("trin'=> ar's) / Lista-ezultata l = new Lista-ezultata(). 1 public boolean daLiAe:boren-ekord(double vreme)/ if (takmi+ari 'et7irst() 'et%reme() > < 33 takmi+ari 'et7irst() 'et%reme() < vreme) return true.i99) if (takmi+ari 'et(i) 'et%reme()2=<) "#stem out $rintln(takmi+ari 'et(i)).i99) CCOko se nadje takmi+ar koji ima ve+e vreme od CCuneto' takmi+ara ili ako se naidje na diskvali0 CCtakmi+araD vrsi se unosenje if (t 'et%reme() < takmi+ari 'et(i) 'et%reme() RR takmi+ari 'et(i) 'et%reme() == <)/ takmi+ari add(iDt). 1 1 else "#stem out $rintln(5@reska5). 1 public void is$isi()/ for (int i=<. break. for (int i=<. i<takmi+ari size().i<takmi+ari size().1 takmi+ari = new LinkedList <.i99) if (takmi+ari 'et(i) 'etPemlja() e4uals(zemlja)) "#stem out $rintln((i9?)95 59takmi+ari 'et(i)). else return false. 1 if (2takmi+ari +ontains(t)) takmi+ari add7irst(t). else/ for (int i=<.akmi+ar> (). i<takmi+ari size(). if (maK > takmi+ari size()) maK = takmi+ari size(). 1 public void is$isi7inaliste()/ CCPromenljiva maK se uvodi za slu+aj da u listi nema H takmi+ara int maK = H.

akmi+ar().akmi+ar().akmi+ar(). t? setPemlja(5@r+ka5).akmi+ar tG = new . tN set%reme(<).akmi+ara(t2).akmi+ar().akmi+ar t2 = new .akmi+ara(t!). l is$isi7inaliste().. . "#stem out $rintln(57inalisti5).akmi+ara(t(). t2 set&mePrezime(5)olin 7irt*5). unesi. tG set%reme(<). unesi. t2 setPemlja(5"OD5). . unesi.urk5). 1 1 .akmi+ara(tN).akmi+ar(). t2 set%reme(2< ?2).ritanija5). tG set&mePrezime(5Aa+k "tone5). . .akmi+ar t? = new . tN setPemlja(5. unesi. t! set%reme(?F <(). t! setPemlja(5-usija5). if (l daLiAe:boren-ekord(?F ?)) "#stem out $rintln(5-ekord je oboren5). tG setPemlja(5"OD5). t? set&mePrezime(5)ostas Pa$$as5). tN set&mePrezime(56e*med .akmi+ar(). l l l l l l unesi.akmi+ara(tG). "#stem out $rintln(5-e$rezentativ+i "OD5).akmi+ar tN = new . l is$isi(). unesi. t( set&mePrezime(5Ao*n Pale5). t! set&mePrezime(5&van &vanovi+5).akmi+ar t! = new . else "#stem out $rintln(5-ekord nije oboren5). .akmi+ara(t?). l is$isi-e$rezentativ+e(5"OD5). t( setPemlja(5%elika . t( set%reme(22 MH).urska5). t? set%reme(2! ?).akmi+ar t( = new .

Sign up to vote on this title
UsefulNot useful