NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

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
Vendula Hrstková:29.5.2024 8:49

Chválím přidání příkladu v příloze. I když by to asi chtělo pár průběžných příkladů přímo v lekci. Např. na řádek List<Integer> cislaVetsiNez25 = list.stream()­.filter(a -> a > 25).collect(Co­llectors.toLis­t()); koukám jak tele na nová vrata. Ale třeba časem pochopím...

 
Odpovědět
29.5.2024 8:49
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:3. června 9:45

Krásně popsáno. Jen bych tady možná i uvedl tu na první pohled zmatečnou situaci, kdy mám kolekci čísel.
Když mám takovýto případ:

List<String> users = new ArrayList<>();
users.add("Karel");
users.add("Jiří");
users.add("Michal");
users.remove("Karel"); // odstraní objekt
users.remove(0); // odstraní první index

Tak je vše jasné

No jo, ale co když mám tento případ?

List<Integer> numbers = new ArrayList<>();
numbers.add(7);
numbers.add(2);
numbers.add(45);
numbers.remove(2);

Co se v tomto případě odstraní? 45 na indexu 2 nebo 2, která je na indexu 1?

Bylo by dobré se o tomto zmínit, že se v takovémto případě bere číslo jako literál a odstraní se index. Aby se odstranil objekt (skutečně hodnota 2 na indexu 1), tak by to muselo vypadat následovně:

numbers.remove(Integer.valueOf(2));

Mám za to, že by se to tu mohlo zmínit (pokud to tedy není připraveno jako chyták do nějakého testu :D

Editováno 3. června 9:47
Odpovědět
3. června 9:45
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:3. června 10:27

Jo a ještě mě napadlo, že by možná bylo užitečné zmínit rovnou tady (pro inicializaci) defaultní hodnoty. Když bychom třeba chtěli vytvořit kolekci, která bude obsahovat samé desítky, tak by to vypadalo následovně:

List<Integer> numbers = new ArrayList<>(Arrays.asList(new Integer[100]));
Collections.fill(numbers, 10);

Nebo ještě líp:

List<Integer> numbers = new ArrayList<>(Collections.nCopies(100, 10));

Případně i zmínit podobnou přímou inicializaci, jako je u pole a složených závorek, tak že tohle můžeme docílit pomocí metody of na rozhraní List

List<Integer> numbers = List.of(1, 2, 3, 4, 5);
Odpovědět
3. června 10:27
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
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 3 zpráv z 23.