Rozdiel Medzi Arraylistom A Vectorom

Rozdiel Medzi Arraylistom A Vectorom
Rozdiel Medzi Arraylistom A Vectorom

Video: Rozdiel Medzi Arraylistom A Vectorom

Video: Rozdiel Medzi Arraylistom A Vectorom
Video: Массивы 2024, Smieť
Anonim

Arraylist vs Vector

Na zoznam polí sa dá pozerať ako na dynamické pole, ktoré môže rásť. Z tohto dôvodu programátor nemusí poznať veľkosť arraylistu, keď ho definuje. Vektor možno tiež považovať za pole, ktoré môže rásť vo veľkosti. Vektory je možné ľahko priradiť a je možné ich použiť, keď požadovaná veľkosť úložiska nie je známa až do spustenia.

Čo je to Arraylist?

Na zoznam polí sa dá pozerať ako na dynamické pole, ktoré môže rásť. Arraylisty sú preto ideálne na použitie v situáciách, keď neviete veľkosť prvkov požadovaných v čase deklarácie. V Jave môžu zoznamy polí obsahovať iba objekty, primitívne typy nemôžu obsahovať priamo (primitívne typy môžete vložiť do objektu alebo použiť triedy obáliek primitívnych typov). Zoznamy polí sú všeobecne poskytované metódami na vkladanie, mazanie a vyhľadávanie. Časová zložitosť prístupu k prvku je o (1), zatiaľ čo vkladanie a mazanie má časovú zložitosť o (n). V Jave je možné prechádzať zoznamy polí pomocou foreach slučiek, iterátorov alebo jednoducho pomocou indexov. V Jave boli zoznamy polí predstavené od verzie 1.2 a sú súčasťou rámca Java Collections Framework.

Čo je to Vektor?

Vector je tiež pole, ktoré môže rásť vo veľkosti. Vektory možno ľahko alokovať a možno ich použiť, keď požadovaná veľkosť úložiska nie je známa až do spustenia. Vektory tiež môžu obsahovať iba objekty a primitívne typy. Vektory sú synchronizované, a preto ich možno bezpečne používať v prostredí s viacerými vláknami. Vektory sú poskytované metódami na pridávanie objektov, mazanie objektov a vyhľadávanie objektov. Podobne ako v databáze Arraylist v Jave je možné vektory prechádzať pomocou foreach slučiek, iterátorov alebo jednoducho pomocou indexov. Pokiaľ ide o Javu, od prvej verzie Javy sú zahrnuté aj vektory.

Aký je rozdiel medzi Arraylist a Vector?

Aj keď sú polia aj vektory veľmi podobné dynamickým poliam, ktoré môžu narastať čo do veľkosti, majú určité 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žitie zoznamov polí v prostredí s viacerými vláknami nebude vhodné, zatiaľ čo vektory je možné bezpečne používať v prostrediach s viacerými vláknami (pretože sú bezpečné pre vlákna). Ale synchronizácia vo vektoroch by spôsobila zníženie výkonu. Preto by nebol dobrý nápad používať vektory v jednom vláknovom prostredí. Polia aj vektory interne používajú polia na držanie objektov. Ak aktuálny priestor nestačí, vektory zdvojnásobia veľkosť jeho vnútorného poľa, zatiaľ čo zoznamy polí zväčšia veľkosť jeho vnútorného poľa o 50%. Ale pri použití oboch arraylistov a vektorov je možné zabrániť vhodnej počiatočnej kapacite a zbytočnému zmeneniu veľkosti vnútorného poľa. V situácii, keď je známa rýchlosť rastu dát, by bolo vhodnejšie použitie vektorov, pretože by bolo možné definovať prírastkovú hodnotu vektorov.

Odporúčaná: