Niz objekata i ArrayList – primeri (Java)

Strana 3 od 4 · Objektno programiranje – primeri

Kada objekata ima više, čuvamo ih u nizu ili u listi ArrayList. Ovi zadaci kombinuju klase sa petljama: traženje najboljeg, prosek, pretraga i sortiranje.

Niz objekata i lista objekata:

Ucenik[] odeljenje = new Ucenik[3];          // niz od 3 MESTA – objekti još ne postoje!
odeljenje[0] = new Ucenik("Ana", 5);         // svaki objekat pravimo posebno

ArrayList<Ucenik> lista = new ArrayList<>();  // lista menja veličinu sama
lista.add(new Ucenik("Ivan", 4));
for (Ucenik u : lista) {                       // for-each kroz sve elemente
    System.out.println(u);
}
Pre nego što počneš: pročitaj lekcije Nizovi u Javi, Objekti i metode.
Kako da vežbaš: napiši klasu i program sam/a, pokreni ga na primeru iz zadatka, pa tek onda otvori uputstvo, a na kraju rešenje. Sva rešenja su u Javi; pomoćne klase su u istom fajlu (bez reči public), pa se program pokreće kao jedan fajl.
ZADATAK 01Težina: Lako

Odeljenje: najviši učenik

Učitaj broj učenika n, a zatim za svakog ime i visinu u cm. Podatke čuvaj u nizu objekata klase Ucenik. Ispiši prosečnu visinu (jedna decimala) i ime najvišeg učenika.

Primer

Ulaz

4
Ana 152
Ivan 160
Luka 149
Mara 158

Izlaz

Prosecna visina: 154.8
Najvisi: Ivan (160)
ZADATAK 02Težina: Srednje teško

Biblioteka: pretraga po autoru

Klasa Knjiga ima naslov, autora i godinu izdanja. Učitaj n knjiga (svaki podatak u svom redu) u ArrayList, zatim ime autora i ispiši sve njegove knjige poređane po godini (od najstarije). Ako ih nema, ispiši „Nema knjiga“.

Primer

Ulaz

3
Na Drini cuprija
Ivo Andric
1945
Prokleta avlija
Ivo Andric
1954
Seobe
Milos Crnjanski
1929
Ivo Andric

Izlaz

1945 Na Drini cuprija
1954 Prokleta avlija
ZADATAK 03Težina: Srednje teško

Rang lista takmičenja

Za svakog od n takmičara učitava se ime i bodovi na tri zadatka. Napravi klasu Takmicar sa metodom ukupno(). Ispiši rang listu: mesto, ime i ukupne bodove, od najboljeg. Takmičari sa istim brojem bodova dele mesto, a ređaju se po imenu.

Primer

Ulaz

4
Luka 100 50 30
Ana 80 100 0
Ivo 90 80 0
Mia 100 80 0

Izlaz

1. Ana 180
1. Luka 180
1. Mia 180
4. Ivo 170
ZADATAK 04Težina: Lako

Korpa u prodavnici

Klasa Artikal ima naziv, cenu po komadu i količinu, i metodu vrednost(). Učitavaj artikle (naziv cena količina) dok se ne unese naziv „kraj“, čuvaj ih u listi, pa ispiši račun: svaki artikal sa vrednošću i na kraju ukupno. Ako je ukupno veće od 5000, dobija se popust 10%.

Primer

Ulaz

hleb 80 2
mleko 150 3
sir 900 5
kraj

Izlaz

hleb 160
mleko 450
sir 4500
Ukupno: 5110
Sa popustom: 4599
ZADATAK 05Težina: Teže

Imenik: dodaj, pronađi, obriši

Napravi klasu Kontakt (ime, telefon) i klasu Imenik koja u sebi ima ArrayList<Kontakt> i metode dodaj, pronadji(ime) i obrisi(ime). Program čita komande: D ime telefon, P ime, O ime, K (kraj) i ispisuje rezultat svake pretrage.

Primer

Ulaz

D Ana 0641112233
D Ivan 0601234567
P Ana
O Ana
P Ana
P Ivan
K

Izlaz

Ana: 0641112233
Nema kontakta: Ana
Ivan: 0601234567
Česte greške i saveti
  • new Ucenik[5] pravi samo 5 praznih mesta (null); pristup odeljenje[0].ime pre new Ucenik(...) daje NullPointerException.
  • Lista se pravi sa tipom u zagradama: ArrayList<Knjiga>; potreban je import java.util.ArrayList;.
  • Za veličinu: kod niza niz.length, kod liste lista.size().
  • Za sortiranje liste objekata koristi lista.sort(Comparator.comparing(...)) ili napiši poređenje sam.

Proveri znanje

Otvori kviz

Mini kviz: nizovi objekata

1. Šta se nalazi u nizu posle Knjiga[] k = new Knjiga[3];?




2. Kako se dodaje element u ArrayList?




3. Kako se dobija broj elemenata liste?