Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 3. diel - Zoznam (list) pomocou poľa v Jave

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Odpovedá na DarkCoder
Jan Křížek:5.5.2021 15:13

Děkuji, už je mi to jasnější :)

 
Odpovedať
5.5.2021 15:13
Avatar
Jaroslav Drobek:5.3.2022 18:07
  • "na třídě List"..je to přece rozhraní..
  • "tato funkce"...nep­řijatelné..
  • dvě přetížení metody remove() mají zřejmě (dosud nevysvětlené) priority v případě, že se předává položka typu Integer - upřednostní se to přetížení, které tuto položku přebírá jako index, tj. primitivní int.
 
Odpovedať
+1
5.3.2022 18:07
Avatar
Odpovedá na Jaroslav Drobek
Petr Štechmüller:5.3.2022 19:56

Ahoj, drobnosti s Třídou a funkcí se opraví. Co se týče třetího bodu. Upřímně, o tom jsem nikdy nepřemýšlel. Na druhou stranu jsem se zeptal Googlu a ten mi dal jednoduchou odpověď: https://stackoverflow.com/a/21795409

With an ArrayList<Integer>, removing an integer value like 2, is taken as index, as remove(int) is an exact match for this. It won't box 2 to Integer, and widen it.

A workaround is to get an Integer object explicitly, in which case widening would be prefered over unboxing:

list.remove(Integer.valueOf(2));
Odpovedať
5.3.2022 19:56
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovedá na Petr Štechmüller
Jaroslav Drobek:5.3.2022 20:34

To vypadá rozumně. Asi by mě taky nenapadlo se tím zabývat, nebýt úlohy v kvízu zde na ITnetwork, v níž se s instancí ArrayList<Integer> podnikalo toto:

zhlednuteEpizody.add(1);
zhlednuteEpizody.remove(2);
zhlednuteEpizody.add(2);

což svádělo ke stejné interpretaci remove() a add()..

 
Odpovedať
+2
5.3.2022 20:34
Avatar
Jan Trnka
Člen
Avatar
Jan Trnka:13.1.2023 23:16

Srozumitelná lekce. Díky.

 
Odpovedať
13.1.2023 23:16
Avatar
Pavel Mikuška:23.5.2023 20:16

Úvod mi príde komplikovaný, niektoré vetné konštrukcie príliš zložité a niektoré informácie zbytočné. Radšej pridať príklady kódu - a čo, že to možno bolo uvedené v inej lekcii? Čo je to ten List som teda z textu veľmi nepochopil. Ďalej spravte korekciu textu - napr. popis metod, načo 2x za sebou vypísať názov metódy? (sort() - Metoda sort() setřídí list.) ???

 
Odpovedať
23.5.2023 20:16
Avatar
Stanislav Kus:17.6.2023 15:07

Taky by bylo fajn vysvětlit, proč najednou vytváříme ArrayList jako pouhý List.

 
Odpovedať
+2
17.6.2023 15:07
Avatar
Vojtěch
Člen
Avatar
Vojtěch:5.1.2024 8:55

Nechci rýpat, vypadá to že autoři těchto tutoriálu se nedomluvili, každý autor píše úplně jinak a chybí tomu konzistence..­..dlouho sem se držel l...než jsem toto napsal....věřím že to jde totiž vysvětlit jednodušeji...

Od začátku této kapitolu mám pocit, že autor používá termíny a obraty, které nejsou z hlediska didaktiky úplně pro začátečníky nejlepší.

To co se mi líbilo v začátcích.... zkl. Konstrukcích Java a na začátku OOP tak zde se to úplně vytratilo...bojím se co přijde dál..

 
Odpovedať
5.1.2024 8:55
Avatar
Vojtěch
Člen
Avatar
Odpovedá na DarkCoder
Vojtěch:5.1.2024 8:59

Hezky vysvětleno, nicméně nechápu proč autor napíše takovouto větu ....jak z akademického prostředí...přitom to lze napsat jednoduše a podrobné vysvětlení by mohlo být v tuto chvíli jako rozšíření, někde pod čarou případně odkázat.

 
Odpovedať
5.1.2024 8:59
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Vojtěch
DarkCoder:6.1.2024 15:04

Ona ta věta je vesměs v pořádku, ale to pro to, že znám problematiku. Kdokoli, kdo to čte prvně, může být skutečně zmatený. Chybějící preciznost a srozumitelnost se bohužel vyskytuje napříč celým zdejším fórem.

To co ve vysvětlení chybí je pojem - adresa. Obrázek s indexy a hodnotami je sice hezký, ale pro vysvětlení přístupu k prvku daného typu nedostatečný. Ta věta evokuje to, že si jednoduše sáhneme pro konkrétní hodnotu prvku, ale celé je to o dost složitější.

Pole je kolekce prvků stejného typu jdoucí v paměti za sebou. Pole je uloženo v paměti a začíná na nějaké adrese. Tato adresa se nazývá bázová adresa a od této adresy se vše ostatní odvíjí. Dále velikost typu hraje zde důležitou roli. Neplatí tedy, že pokud počátek pole bude ležet např. na adrese 100, pak adresa následujícího prvku bude 101. To platí pouze pro datové typy, které zabírají právě 1 byte. Budeme-li se bavit o 32 bitovém prostředí a datovému typu int, který v tomto prostředí zabírá 4 byty. Pak první prvek bude ležet na adresách 100 až 103. Další prvek (druhý) leží na adresách 104 až 107. Jak se určuje adresa N-tého prvku jsem již detailně popsal v diskuzi výše.

Přístupem k danému prvku se tedy rozumí to, že nejprve je třeba získat adresu onoho prvku a poté přečíst hodnotu na této adrese. Takto by to mělo být popsáno a vysvětleno v článku spolu s detailní ukázkou, ze které je to jasně patrné a srozumitelné.

Odpovedať
+2
6.1.2024 15:04
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 21.