Java: Kontejnery
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (Přidání procházení kontejneru.) |  (→Procházení kontejneru:  Přidány další příklady a komentář.) | ||
| Řádka 30: | Řádka 30: | ||
| == Procházení kontejneru == | == Procházení kontejneru == | ||
| − |   '''for''' ('' | + | * Předpokládejme, že máme kontejner instancí třídy <code>Prvek</code>: | 
| − |      ... ''Práce s  | + |  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 <code>for each</code>. | ||
| + | * Zapisujeme: | ||
| + |   '''for''' (''Prvek'' ''nazevPromenne'' : ''kontejner'') { | ||
| + |      ... ''Práce s konkrétním prvkem (je v proměnné nazevPromenne)''... | ||
|   } |   } | ||
| + | |||
| + | ; Příklady: | ||
| + | ; 1.  | ||
| + | * Vypíšte jména všech osob v kontejneru instancí třídy <code>Osoba</code> | ||
| + |  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 <code>Ucet</code>. Třída <code>Ucet</code> má metodu <code>getStav()</code>, 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); | ||
| + | |||
| + | == Úkoly == | ||
| + | ; Úkol 1  | ||
| + | * Máte kontejner instancí třídy <code>Klient</code>.  | ||
| + | * Máte k dispozici metodu <code>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</code>. | ||
| + | * Vytvořte instanci třídy <code>Pradelna</code>, třída má metodu <code>oper(Odev o)</code>. (Třídu <code>Pradelna</code> psát nemusíte.) | ||
| + | * Vezměte postupně všechny instance třídy <code>Odev</code> a předejte je k oprání vytvořené instanci třídy <code>Pradelna</code>. | ||
Verze z 6. 6. 2016, 22:07
| 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.
-  Vypíš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řídaUcetmá 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);
Ú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říduPradelnapsát nemusíte.)
-  Vezměte postupně všechny instance třídy Odeva předejte je k oprání vytvořené instanci třídyPradelna.
