Co je to ArrayList?
ArrayList v programování počítače je datová struktura, která se chová jako počítačové pole, ale také implementuje schopnost dynamicky růst velikosti pole podle potřeby. Na rozdíl od typu dat vnitřního pole, který nelze při provádění programu změnit, může struktura pole růst a zmenšit velikost pole v reakci na přidání nebo deleci prvků. Má velmi příznivý profil výkonu, který umožňuje rychlý náhodný přístup ke sběru dat. Existují však dva instance, ve kterých je pomalejší než některé jiné datové struktury, a to přidání a odstranění prvků ze středu pole. Většina objektově orientovaných programovacích jazyků má určitý typ implementace takového seznamu, ačkoli se někdy nazývají dynamická pole.
Pomocí ArrayList poskytuje program se schopností přistupovat k datovým objektům s indexovým číslem místo toho, aby museli projít celou sekvencí dat, aby našli adresu, což je vyžadováno, což je vyžadovánoed s propojenými seznamy. Se schopností zvětšit velikost pole podle potřeby je to velmi vyvážený přístup, který zvažuje jak flexibilitu, tak rychlost. Navíc, když jsou prvky odstraněny z takového seznamu, zmenšuje se velikost pole a uvolní paměťový prostor.
Jednou z výhod používání ArrayList oproti některým jiným datovým strukturám je to, že objekt obalů není nutný, aby obsahoval uložená data. V případě propojeného seznamu nebo hashovací tabulky je obvykle zapotřebí samostatného objektu k udržení techniky používané k držení a manipulaci s sbírkou. S ArrayList je jedinou potřebnou informací o datových objektech adresa objektu v paměti. To znamená, že při práci s tímto typem seznamu bude méně využití paměti režie.
Potenciální problém s používáním ArrayList může pocházet ze systému implementace a správy paměti. Většina polí je AlNachází se jako po sobě jdoucí umístění paměti. Chcete -li tedy použít pole určité velikosti, musí být v nepřetržité sekvenci bloků k dispozici alespoň tolik paměti. Dynamické pole by se mohlo několikrát změnit velikost, takže může dojít k fragmentaci paměti a vést k selhání přidělování paměti a provádění programu zastavení.
Výkon ArrayList je podobný výkonu použití standardního pole, i když přístupové časy jsou o něco pomalejší, protože pole je zapouzdřeno v objektu. Jedním příkladem, ve kterém může dynamické pole dramaticky zpomalit, v závislosti na implementaci, je, kdy je třeba změnit velikost pole. To může zahrnovat kopírování aktuálního pole do nového pole, které bylo přiděleno nové požadované velikosti, což způsobuje dočasnou degradaci výkonu. Stejný problém lze vyskytnout při přidávání nebo odstranění prvku ze středu seznamu, což způsobuje, že všechny následující prvky musí být přesunuty na nové místo.