loading...
Předmět Autor Datum
Pokud vím ne. Ale není problém si vytvořit třídu, která to bude řešit za tebe.
Wikan 18.06.2019 21:15
Wikan
OK. A co znamená první odpověď u otázky?
MichalDM 18.06.2019 22:22
MichalDM
List je interfejs, ktorý môže byť implementovaný ďalšími triedami. ArrayList je jednou z implementác…
moose 19.06.2019 06:41
moose
Řekněme, že žádný hlubší účel to nemá. Jen chci vědět, jestli je to možné.
MichalDM 19.06.2019 10:02
MichalDM
Nechápem k čomu to má byť dobré...Ty to nemáš pod kontrolou? * size() Ti vráti počet prvkov, na zákl…
pme 18.06.2019 21:20
pme
Určitě je to možné. Stačí ti k tomu znát magickou syntaxi. var x = new String[10]; Tento kus kódu…
vlada01 19.06.2019 02:19
vlada01
ještě jako bonus k tomu dostaneš škálovatelnost Len pre zaujímavosť, čo máš na mysli pod škálovateľ…
moose 19.06.2019 06:44
moose
Špatně jsem to použil. Myslel jsem tím, že za pomocí polí se dají vytvářet složitější třídy, např. z…
vlada01 19.06.2019 19:17
vlada01
...má ArrayList (oproti klasickému poli) dynamickou velikost... Přesně tohle jsem zmínil v zadání.…
MichalDM 19.06.2019 09:56
MichalDM
Snažil jsem se tě donutit se zamyslet. Dokonce jsem ti tam i přidal návod na implementaci řešení. Ko…
vlada01 19.06.2019 19:13
vlada01
No, uzavřel bych to s tím, že mě jenom zajímalo, jestli je to možné, ale lze to nastavit pouze u kla…
MichalDM 22.06.2019 23:42
MichalDM
Each ArrayList instance has a capacity. The capacity is the size of the array used to store the elem…
vlada01 23.06.2019 00:00
vlada01
OK. Díky poslední
MichalDM 23.06.2019 00:06
MichalDM

List je interfejs, ktorý môže byť implementovaný ďalšími triedami. ArrayList je jednou z implementácií, ktorá umožňuje pridávať a odoberať prvky.

Arrays.asList vracia implementáciu interfejsu, za ktorou stojí pole. Operácie pracujúce nad takto vytvoreným Listom menia priamo prvky toho poľa a niektoré operácie sú zakázané úplne (ako napr. pridanie a odobranie prvku).

Ak ti stačí List s pevným počtom prvkov, tak pomocou Arrays.asList vieš vytvoriť List s nastaveným maximálnym počtom prvkov. Možno nevýhodou bude, že to v takom prípade bude aj minimálny počet prvkov.

Ak chceš obmedziť maximálny počet prvkov v ArrayListe, tak si sprav wrapper triedu, ktorá pri pridávaní prvku skontroluje, či nebola prekročená maximálna hodnota. Možno by pomohol kontext, že na čo to vlastne potrebuješ, lebo väčšinou takáto biznis logika býva v servisnej triede, ktorá interne používa list a ak ho vystavuje von, tak iba v nemennej forme.

Určitě je to možné. Stačí ti k tomu znát magickou syntaxi.

var x = new String[10];

Tento kus kódu je fool-proof. Dokonce to má i kontrolu na to, že nemůžeš získat prvek s indexem větším (nebo menším) než je velikost pole - 1, jinak skončíš u IndexOutOfBoundsException ;-) ještě jako bonus k tomu dostaneš škálovatelnost. Člověk by nevěřil co všechno se dá s pouhým polem dokázat. Doslova všechno. K tvému štěstí je Java OOP a vytvoření třídy s privátní vlastností, která bude reprezentovat třeba (tohle je úplně OT - nemá to žádnou souvislost s tim na co se ptáš) index posledního prvku v poli o pevné velikosti, není vůbec složité. O nějakých metodách se snad ani nemá cenu zmiňovat :puff:

Snažil jsem se tě donutit se zamyslet. Dokonce jsem ti tam i přidal návod na implementaci řešení. Kolekce s pevně danou maximální velikostí je v podstatě definice pole.
V Javě se používá ArrayList a LinkedList. Jak již název napovídá, tak ArrayList je implementován pomocí klasického pole :-) LinkedList je tzv. "spojitý seznam" a každý prvek udržuje referenci na ten další, příp. i na ten předchozí. Pokud použiješ přetížení konstruktoru array listu, kam předáš nějaké pole, tak tim nevytvořiš list o maximální velikosti toho pole.

No, uzavřel bych to s tím, že mě jenom zajímalo, jestli je to možné, ale lze to nastavit pouze u klasického pole.

V podstatě, u pole je to nutnost. U ArrayListu je pouze možné zadat, s jakým počtem prvků se inicializuje. (normálně je to 0)

I když, přesto bych se chtěl zeptat. Jaký je rozdíl mezi

var without_capacity = new ArrayList<Object>();

a

var with_capacity = new ArrayList<Object>(100);

Pokud následně přidáš 100 objektů, tak je výsledek stejný.

K čemu je teda inicializace dobrá?

Díky

Each ArrayList instance has a capacity. The capacity is the size of the array used to store the elements in the list. It is always at least as large as the list size. As elements are added to an ArrayList, its capacity grows automatically. The details of the growth policy are not specified beyond the fact that adding an element has constant amortized time cost.

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

Jedná se o prvotní velikost pole, ve kterém se elementy ukládají.

Zpět do poradny Odpovědět na původní otázku Nahoru

loading...