Különbség az ArrayList és a vektor között a Java-ban
Tartalom
Az ArrayList és a Vector egyaránt a Collection Framework hierarchia osztályai. Az ArrayList és a Vector egyaránt objektumok dinamikus tömbjének létrehozására szolgál, ahol a tömb méretének növekedése, amikor szükséges. Két alapvető különbség különbözteti meg az ArrayList és a Vektorot, hogy a Vector a Legacy osztályokhoz tartozik, amelyeket később átterveztek a gyűjtemény osztályok támogatására, míg az ArrayList egy standard gyűjtemény osztály. Egy másik fontos különbség az, hogy az ArrayList nem szinkronizált; A vektor szinkronizálva van.
Vizsgáljuk meg néhány más különbséget az alább bemutatott összehasonlító táblázat segítségével.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Hasonlóságok
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | Tömb lista | Vektor |
---|---|---|
Alapvető | Az ArrayList osztály nincs szinkronizálva. | A vektor osztály szinkronizálva van. |
Legacy osztály | Az ArrayList egy standard Collection osztály. | A Vector egy régi osztály, amelyet újraterveztünk a gyűjtemény osztály támogatására. |
Osztályi nyilatkozat | osztály ArrayList | osztály vektor |
Újraelosztás | Ha nincs megadva, az ArrayList méretét felére növeli. | Ha nincs megadva, a vektort megnövelik, hogy megkétszerezzék a méretét. |
Teljesítmény | Mivel az ArrayList nincs szinkronizálva, gyorsabban működik, mint a Vector. | Mivel a Vector szinkronizálva van, lassabban működik, mint az ArrayList. |
Számlálás / Iterátor | Az ArrayList Iterator felületet használ az ArrayList tárolt objektumok átjárására. | A Vektor a Számlálást és az Iterator felületet használja a Vektorokban tárolt objektumok áthaladásához. |
Az ArrayList meghatározása
Az ArrayList a standard gyűjtési osztályok listájához tartozik. Az ArrayList osztály a java.util csomag, kibővíti a AbstractList osztály, amely szintén egy szokásos gyűjteménygyűjtemény, és azt is végrehajtja Lista, a Gyűjtő interfészekben meghatározott felület. A Java-ban a standard tömb mindig rögzített hosszúságú. Ez azt jelenti, hogy egyszer létrehozták; dinamikusan nem növekszik vagy nem zsugorodik. Tehát előzetesen tudnia kell a használt tömb hosszáról. De néha előfordulhat, hogy a szükséges hossz futásidejűleg is felfedi, így egy ilyen helyzet kezelésére a Java bevezette az ArrayList alkalmazást.
Az ArrayList osztály egy tömb dinamikus létrehozására szolgál, amely az objektumokra való hivatkozásokat tartalmazza. Ez a tömb méretében növekszik, amikor és amikor szükséges. Az osztálynyilatkozat a következő:
osztály ArrayList Itt E határozza meg az objektum típusát, amelyet egy tömb fog tartani. A létrehozott tömb változó hosszúságú, és az objektumok hozzáadásakor vagy a listából való eltávolításakor mérete növekszik és csökken. Az ArrayList nincs szinkronizálva, tehát egynél több szál működhet a tömbön egyszerre. Például, ha az egyik szál objektum hivatkozást ad a tömbhöz, és egy másik szál objektum hivatkozást távolít el ugyanabból a tömbből egyszerre. Dinamikus tömb létrehozása az ArrayList osztály használatával: Tömb lista A fenti kódban ezt láthatja; Készítettem egy tömböt karakterlánc típusú objektumokból. Néhány objektumot az S1 tömbbe adtam hozzá az add () módszerrel, majd néhány objektumot később töröltem az remove () módszerrel. Megfigyelheti, ha nem határozza meg a tömb kezdeti méretét, akkor „0” hosszú lesz. Amint láthatja, a tömb növekszik és csökken, mivel hozzáadja és törli az elemeket. A Vector egy Legacy osztály, amelyet újraterveztünk annak érdekében, hogy támogassa a gyűjtemény osztályát a Collection Framework hierarchiájában. A vektorosztályt szintén a java.util csomag kibővítve AbstractList osztály és a Lista felület. A Vector osztályt a következőképpen deklarálják: osztály vektor Az E meghatározza az objektum típusát, amelyet egy tömbben tárolnak. A Vector osztály segítségével létrehozott tömb változó hosszúságú. Megduplázza méretét, ha a növekményt nem adják meg. Megértjük a tömb létrehozását a Vector segítségével. Vektor A fenti kódban láthatod, hogy külön említettem a méret méretét és a növekményes értéket a Vector konstruktorában, miközben a karakterláncobjektumok tömbjét deklaráltam. Ezért megfigyelheti, hogy amint a tömb korlátja befejeződik, az növekszik az értékkel, amelyet a kivitelezőnek adtak deklarálás közben. Végül azt mondom, hogy az ArrayList használata jobb, mint a Vector használata, mivel gyorsabban és jobban teljesít.A vektor meghatározása
Hasonlóságok:
Következtetés: