Java: Kontejnery
Z MiS
(Rozdíly mezi verzemi)
(→Procházení kontejneru: Přidány další příklady a komentář.) |
(Přidána tabulka s přehledem syntaxe.) |
||
Řádka 39: | Řádka 39: | ||
; Příklady: | ; Příklady: | ||
− | ; 1. | + | ; 1. Vypište jména všech osob v kontejneru instancí třídy <code>Osoba</code> |
− | + | ||
ArrayList<Osoba> kontejner = new ArrayList<>(); | ArrayList<Osoba> kontejner = new ArrayList<>(); | ||
'''for''' (Osoba o : kontejner) { | '''for''' (Osoba o : kontejner) { | ||
Řádka 55: | Řádka 54: | ||
} | } | ||
System.out.println(vysledek); | System.out.println(vysledek); | ||
+ | |||
+ | |||
+ | |||
+ | == Přehled syntaxe — srovnání s polem == | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! !! <code>ArrayList</code> !! Pole | ||
+ | |- | ||
+ | | Vytvoření kontejneru | ||
+ | | | ||
+ | <code>import java.util.ArrayList;<br /> | ||
+ | ''...''<br/> | ||
+ | ArrayList<Auto> kontejner = new ArrayList<>();</code> | ||
+ | | <code>Auto pole[] = new Auto[''5'']</code> | ||
+ | |- | ||
+ | | Uložení prvku || <code>kontejner.set(''5'', new Auto())</code><br /><code>kontejner.add(new Auto())</code> || <code>pole[''5''] = new Auto()</code> | ||
+ | |- | ||
+ | | Vyzvednutí prvku || <code>kontejner.get(''5'')''.startuj()''</code> || <code>pole[''5''].''startuj()''</code> | ||
+ | |- | ||
+ | | Zjištění počtu prvků || <code>kontejner.size()</code> || <code>pole.length</code> | ||
+ | |- | ||
+ | | Odstranění prvku || <code>kontejner.remove(''auto'');</code><br /><code>kontejner.remove(''3'');</code> || | ||
+ | |- | ||
+ | | Průchod foreach | ||
+ | | | ||
+ | for (Auto a : kontejner) { | ||
+ | a.jed(); | ||
+ | } | ||
+ | | | ||
+ | for (Auto a : pole) { | ||
+ | a.jed(); | ||
+ | } | ||
+ | |- | ||
+ | |} | ||
+ | |||
== Úkoly == | == Úkoly == |
Verze z 21. 2. 2017, 09:57
Obsah |
Kontejner
- Třída, která umožňuje ukládat více objektů.
- Příklad: Třída
ArrayList
.
Práce s kontejnerem ArrayList
- Vytvoření kontejneru
ArrayList<Predmet> kontejner = new ArrayList<Predmet>();
- Od Javy 8 stačí psát:
ArrayList<Predmet> kontejner = new ArrayList<>();
- Uložení objektu
kontejner.add(predmet);
- Získání objektu
Predmet kontejner.get(poradi);
- Odstranění objektu z kontejneru
kontejner.remove(poradi); kontejner.remove(predmet); kontejner.clear();
- Zjištění počtu prvků v kontejneru
int kontejner.size(); boolean kontejner.isEmpty();
Procházení kontejneru
- Předpokládejme, že máme kontejner instancí třídy
Prvek
:
ArrayList<Prvek> kontejner = new ArrayList<>();
- Pokud chceme projít všechny prvky v kontejneru a s každým provést nějakou operaci, pak použijeme cyklus
for each
. - Zapisujeme:
for (Prvek nazevPromenne : kontejner) { ... Práce s konkrétním prvkem (je v proměnné nazevPromenne)... }
- Příklady
- 1. Vypište jména všech osob v kontejneru instancí třídy
Osoba
ArrayList<Osoba> kontejner = new ArrayList<>(); for (Osoba o : kontejner) { System.out.println(o.getJmeno()); }
- 2. Sečtěte hodnoty všech prvků v poli
- Máte kontejner instancí třídy
Ucet
. TřídaUcet
má metodugetStav()
, která vrací číslo — aktuální stav účtu. - Sečtěte celkový stav na všech účtech dohromady:
ArrayList<Ucet> ucty = new ArrayList<>(); int vysledek = 0; for (Ucet u : ucty) { vysledek += u.getStav(); } System.out.println(vysledek);
Přehled syntaxe — srovnání s polem
ArrayList |
Pole | |
---|---|---|
Vytvoření kontejneru |
|
Auto pole[] = new Auto[5]
|
Uložení prvku | kontejner.set(5, new Auto()) kontejner.add(new Auto()) |
pole[5] = new Auto()
|
Vyzvednutí prvku | kontejner.get(5).startuj() |
pole[5].startuj()
|
Zjištění počtu prvků | kontejner.size() |
pole.length
|
Odstranění prvku | kontejner.remove(auto); kontejner.remove(3); |
|
Průchod foreach |
for (Auto a : kontejner) { a.jed(); } |
for (Auto a : pole) { a.jed(); } |
Úkoly
- Úkol 1
- Máte kontejner instancí třídy
Klient
. - Máte k dispozici metodu
odesliPlatbu(Klient k, int castka). Jedná se o instanční metodu vaší třídy.
- Všem klientům máte odeslat částku ve výši 100 Kč.
- Úkol 2
- Máte kontejner instancí třídy <code>Odev.
- Vytvořte instanci třídy
Pradelna
, třída má metoduoper(Odev o)
. (TříduPradelna
psát nemusíte.) - Vezměte postupně všechny instance třídy
Odev
a předejte je k oprání vytvořené instanci třídyPradelna
.