NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 2 - Java Collections Framework

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Filip Kos
Člen
Avatar
Filip Kos:2.8.2023 10:54

Já vám nevím, ale asi v tom lítám :/ Chce to čas, obdivuji ty kteří to mají zmáknutý, ani nechcete vědět co mám v hlavě teď :D :D

 
Odpovědět
2.8.2023 10:54
Avatar
Marek Jiříček:14.8.2023 19:46

"return arrayList[curren­tIndex++];"

Co takhle neco k precedenci operátorů? Nepomatuju si že by v základním Java tutorálu bylo vysvětleno, že tento řádek způsobí, že program nejdříve vrátí arrayList[curren­tIndex] (před inkrementací) a teprve následně provede inkrementaci currentIndex.

 
Odpovědět
14.8.2023 19:46
Avatar
Tomas Panagopulos:4.10.2023 20:13

Jen na pochopení tohoto článku bych potřeboval 4 dny roložené do praxe a vypisování.

 
Odpovědět
4.10.2023 20:13
Avatar
Václav Osička:6.10.2023 13:50

Tak jsem si to přečetl a moc to nepobral. Trochu doufám, že zítra bude lepší konstelace hvězd a v hlavě se mi rozsvítí...

 
Odpovědět
6.10.2023 13:50
Avatar
Vojtěch
Člen
Avatar
Vojtěch:5.1.2024 8:24

Nevím zatím jen čtu...potřeboval bych více jednoduchých vzorovych příkladů, a ukázek. Mám pocit že je to takové hození neplavce do vody se slovy " a plav..."

Jinak Ok, díky.

 
Odpovědět
5.1.2024 8:24
Avatar
Vendula Hrstková:27.5.2024 10:09

Co takhle přidat nějaký příklad? Dvě lekce, spousta písmenek a absolutně netuším, na co je to dobré. Chce to příklad se zvířátky, auty, kytičkami apod. Tenhle shluk vyjmenovaných rozhraní, metod apod. začátečníkovi nedá vůbec nic.

 
Odpovědět
27.5.2024 10:09
Avatar
Odpovídá na Vendula Hrstková
Miroslav Švec:5.9.2024 19:14

Musím souhlasit, brejlím na tu hromadu kódu a vůbec netuším, která bije.

 
Odpovědět
5.9.2024 19:14
Avatar
Michal Dorušiak:26.11.2024 17:19

Velmi strucne vysvetlený kód, precital som si to 3-krat a mam pocit ze som si z toho nic neodniesol

 
Odpovědět
26.11.2024 17:19
Avatar
Miroslav Bolf:21. ledna 2:37

Měl bych připomínku k vyjádření:Rozhraní Collection je rozšířeno o metody podle způsobu
použití pomocí rozhraní List, Set a
Queue.

Když řekneme, že "Collection je rozšířeno o metody", může to vyvolat dojem, že základní rozhraní Collection získává nové metody. Ve skutečnosti je to naopak - jsou to specializovaná rozhraní (List, Set, Queue), která:

  1. Dědí funkcionalitu z Collection
  2. Přidávají své vlastní specifické metody
  3. Definují své specifické chování

Proto je přesnější říct, že "List, Set a Queue rozšiřují Collection", což jasně vyjadřuje směr dědičnosti a rozšiřování funkcionality. Nebýt UML diagramu na začátku lekce, bych to nepochopil.

 
Odpovědět
21. ledna 2:37
Avatar
Eliška Černá:17. února 21:47

Ahoj, všimla jsem si, že nejsem jediná, kdo v úvodu do kolekcí plave. Po malých krůčcích tomu přicházím na kloub, nastudovala jsem něco z učebnic a z oficiální dokumentace. Pokusím se to tu jakžtakž srozumitelně podat.

Obecnějším pojmem než kolekce jsou kontejnery – objekty, které uchovávají více hodnot – hodnoty primitivních typů nebo odkazy na jiné objekty (tedy hodnoty referenčních typů). Metody v Javě totiž vrací vždy pouze jednu hodnotu. Při použití kontejnerů vrátí také jednu hodnotu – kontejner, který v sobě ale uchovává více hodnot.

Druhy kontejnerů: pole, kolekce, mapy a slovníky, přepravky, nestandardní (ostatní) kontejnery.

Kolekce jsou velká skupina kontejnerů, které implementují rozhraní Collection – jeho instance představují obecné kolekce. Ostatní rozhraní kolekcí jsou jeho potomky. Třída Collections nepředstavuje žádnou kolekci, avšak poskytuje mnoho metod pro práce s kolekcemi.

Kolekce jsou obecně dynamické kontejnery určené pro ukládání jednotlivých prvků referenčních datových typů. Primitivní datový typ je třeba buď zabalit do obalového typu nebo definovat vlastní datový typ.

T – představuje datový typ, E – představuje element (prvek)

Parametry v Javě: parametry metod a parametry datových typů. Typ parametru metody představuje datový typ příslušného parametru nějaké metody. Typ parametru datového typu, nebo-li typový parametr pak představuje datový typ příslušného parametru nějakého datového typu (můžeme říci, že je to meta-typ). Parametry v definici metod uzavíráme do kulatých závorek, parametry v definici datových typů uzavíráme do špičatých závorek.

Typový parametr nabývá hodnot konkrétních datových typů.

Příklad:

Metoda soucet(int a, int b) má dva parametry datového typu int.
Typ Type<String> má jeden parametr datového typu String.

Datové typy s typovými parametry = generické datové typy. Jsou definovány obecně pro celou skupinu datových typů a až dosazením konkrétní hodnoty typového parametru definitivně specifikujete jejich chování.

S generickým datovým typem pracujeme jako s třídou (toto je ve výkladu trochu matoucí – píše se tam, že definujeme třídu, které přidáme generický parametr, čímž vlastně definujeme generický datový typ, což je objekt ála třída): definujeme jej podobně jako třídu a konkrétní použití uplatníme v hlavní třídě (třídě s metodou main).

Definice generického datového typu:

public class Trida<T>

T = Type, generický typový parametr. Představuje jakýkoliv datový typ. Konkrétní typ specifikujeme až v hlavní třídě, např. jako String:

Trida<String> instance = new Trida<>();

Nebo jako Integer (musí to být Integer, nikoli int, protože generický datový typ je referenční – u primitivních datových typů musíme použít jejich referenční obal):

Trida<Integer> instance = new Trida<>();

Obecně: Trida<T> trida = new Trida<>();

V příkladech výše jsme použili implicitní prázdný konstruktor, který Java vytváří všem třídám. Do třídy představující generický datový typ však můžeme, stejně jako do jiných tříd, přidávat atributy a metody a vytvářet pak další konstruktory, které využívají přidané atributy jako své parametry. Díky tomu, že máme k dispozici obecný datový typ, si můžeme vytvořit obecný atribut, jehož datový typ se specifikuje až při vytvoření instance (a bude to datový typ, který specifikujeme ve špičatých závorkách konstruktoru).

Na třídě – generickém datovém typu tedy přidáme atribut a konstuktor, který má příslušný atribut v parametru:

//atribut
private T promennaObecnehoDatTypu

//konstruktor
public.Trida (T promennaObecnehoDatTypu) {
        this.promennaObecnehoDatTypu = promennaObecnehoDatTypu;
}

V metodě main už musíme ve špičatých závorkách vždy specifikovat konkrétní datový typ. Stejného datového typu pak bude proměnná v kulatých závorkách:

Trida<String> novyString = new Trida<>("nějaký String");

Iterátor, resp. iterator() je jedna z metod rozhraní Collection, které obsahuje metody pro práci s kolekcemi. Tato metoda slouží pro práci s prvky kolekce, podobně jako cykly slouží mj. pro práci s prvky pole. Zásadní rozdíl mezi polem a kolekcí spočívá v tom, že prvky pole jsou proměnné primitivního datového typu (kromě Stringů), kděžto prvky kolekce jsou proměnné referenčního datového typu.

Příklad: procházení kolekce dvou položek typu String (v kolekci mohou být i složitější objekty včetně jiných kolekcí, na typu String se ale dobře demonstruje, protože se snadno vypisuje):

ArrayList<String> novylist= new ArrayList<>();

novylist.add("položka");
novylist.add("další položka");

//přístup k položkám pomocí cyklu for each
for(String polozka : novylist )
    System.out.println(polozka);

/*přístup k prvkům přes iterátor (interně aplikován i při přístupu přes cyklus for each):
konstruktor iterátoru + metoda hasNext()(vrací true, pokud exist. následující prvek*/
for (Iterator<String> iterator = novylist.iterator(); iterator.hasNext(); ) {
    String next = iterator.next();
    System.out.println(next);
}

Cyklus for each i iterátor vytvoří stejný výstup:

položka
další položka

Iterátor je v kódu nejprve vytvořen pomocí svého konstruktoru a pak jsou na něm volány metody pro přístup k prvkům kolekce – v tomto případě se nejdříve metodou hasNext() ověří, že nějaký prvek v kolekci existuje, následně se do proměnné next přiřadí hodnota prvku získaná metodou next(). Proměnná next se pak vypíše metodou System.out.println().

 
Odpovědět
17. února 21:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 31.