NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Mezinárodní den IT společnosti je tady! Pouze nyní můžeš získat 90 % extra kreditů při nákupu od 1199 kreditů s promo kódem AJTACI90. Tak neváhej!

Diskuze – Lekce 3 - Seznam (List) pomocí pole v Javě

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
Odpovídá na DarkCoder
Jan Křížek:5.5.2021 15:13

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

 
Odpovědět
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.
 
Odpovědět
5.3.2022 18:07
Avatar
Odpovídá 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));
Odpovědět
5.3.2022 19:56
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá 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()..

 
Odpovědět
5.3.2022 20:34
Avatar
Jan Trnka
Člen
Avatar
Jan Trnka:13.1.2023 23:16

Srozumitelná lekce. Díky.

 
Odpovědět
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.) ???

 
Odpovědět
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.

 
Odpovědět
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..

 
Odpovědět
5.1.2024 8:55
Avatar
Vojtěch
Člen
Avatar
Odpovídá 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.

 
Odpovědět
5.1.2024 8:59
Avatar
DarkCoder
Člen
Avatar
Odpovídá 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é.

Odpovědět
6.1.2024 15:04
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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 21.