Rozdiel medzi zoznamom polí a vektorom

Rozdiel medzi zoznamom polí a vektorom
Rozdiel medzi zoznamom polí a vektorom

Video: Rozdiel medzi zoznamom polí a vektorom

Video: Rozdiel medzi zoznamom polí a vektorom
Video: Самый простой способ выровнять пол! Быстро, Дешево, Надежно. ENG SUB 2024, November
Anonim

Arraylist vs Vector

Zoznam polí možno považovať za dynamické pole, ktorého veľkosť sa môže zväčšiť. Z tohto dôvodu programátor nemusí poznať veľkosť zoznamu polí, keď ho definuje. Vektor možno tiež považovať za pole, ktoré môže rásť. Vektory sa dajú ľahko prideliť a dajú sa použiť, keď nie je do behu známa požadovaná veľkosť úložiska.

Čo je Arraylist?

Zoznam polí možno považovať za dynamické pole, ktorého veľkosť sa môže zväčšiť. Preto sú zoznamy polí ideálne na použitie v situácii, keď nepoznáte veľkosť prvkov požadovaných v čase deklarácie. V Jave môžu zoznamy polí obsahovať iba objekty, nemôžu priamo obsahovať primitívne typy (primitívne typy môžete vložiť do objektu alebo použiť obalové triedy primitívnych typov). Vo všeobecnosti sú zoznamy polí vybavené metódami na vykonávanie vkladania, vymazávania a vyhľadávania. Časová zložitosť prístupu k prvku je o(1), zatiaľ čo vkladanie a vymazávanie má časovú zložitosť o(n). V jazyku Java je možné zoznamy polí prechádzať pomocou slučiek foreach, iterátorov alebo jednoducho pomocou indexov. V Jave boli arraylisty zavedené od verzie 1.2 a sú súčasťou Java Collections Framework.

Čo je vektor?

Vektor je tiež pole, ktoré môže rásť. Vektory sa dajú jednoducho prideliť a možno ich použiť, keď nie je do behu známa požadovaná veľkosť úložiska. Vektory tiež môžu obsahovať iba objekty a nemôžu obsahovať primitívne typy. Vektory sú synchronizované, preto ich možno bezpečne používať vo viacvláknových prostrediach. Vektory sú vybavené metódami na pridávanie objektov, odstraňovanie objektov a vyhľadávanie objektov. Podobne ako arraylist v jave, vektory možno prechádzať pomocou slučiek foreach, iterátorov alebo jednoducho pomocou indexov. Pokiaľ ide o Javu, vektory sú zahrnuté už od prvej verzie Javy.

Aký je rozdiel medzi Arraylist a Vector?

Aj keď sú zoznamy polí aj vektory veľmi podobné dynamickým poliam, ktorých veľkosť môže rásť, majú niektoré dôležité rozdiely. Hlavný rozdiel medzi zoznamami polí a vektormi je v tom, že vektory sú synchronizované, zatiaľ čo zoznamy polí sú nesynchronizované. Preto používanie zoznamov polí vo viacvláknových prostrediach nebude vhodné, zatiaľ čo vektory možno bezpečne použiť vo viacvláknových prostrediach (keďže sú bezpečné pre vlákna). Ale synchronizácia vo vektoroch by spôsobila zníženie výkonu. Preto by nebolo dobré používať vektory v prostredí s jedným vláknom. Interne zoznamy polí aj vektory používajú polia na držanie objektov. Keď aktuálny priestor nestačí, vektory zdvojnásobia veľkosť svojho vnútorného poľa, zatiaľ čo zoznamy polí zväčšia veľkosť jeho vnútorného poľa o 50 %. Ak však použijete zoznamy polí aj vektory, poskytnutím vhodnej počiatočnej kapacity sa možno vyhnúť zbytočnej zmene veľkosti vnútorného poľa. V situácii, keď je známa rýchlosť rastu údajov, by bolo vhodnejšie použiť vektory, pretože by sa dala definovať prírastková hodnota vektorov.

Odporúča: