Különbség az ArrayList és a vektor között a Java-ban

Szerző: Laura McKinney
A Teremtés Dátuma: 1 Április 2021
Frissítés Dátuma: 1 Lehet 2024
Anonim
Különbség az ArrayList és a vektor között a Java-ban - Technológia
Különbség az ArrayList és a vektor között a Java-ban - Technológia

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.

  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Hasonlóságok
  5. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaTömb listaVektor
AlapvetőAz ArrayList osztály nincs szinkronizálva.A vektor osztály szinkronizálva van.
Legacy osztályAz 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 nyilatkozatosztály ArrayListosztály vektor
ÚjraelosztásHa 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ényMivel 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átorAz 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 S1 = új ArrayList(); System.out.ln ("S1 kezdeti mérete:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.ln ("Az S1 hozzáadása után a következőket tartalmazza:" + S1); System.out.ln ("S1 mérete hozzáadása után:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.ln ("A törlés után az S1 tartalmazza:" + S1); System.out.ln ("S1 mérete törlés után:" + S1.size ()); // OutputI1 eredeti mérete: 0 hozzáadása után az S1 a következőket tartalmazza:; Az S1 mérete hozzáadása után: 4 A törlés után az S1 tartalmazza: Az S1 mérete a törlés után: 2

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 vektor meghatározása

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 V = új vektor(1,1); V.addElement ( "Tech"); V.addElement ( "különbségek"); System.out.ln ("Kapacitás 2 hozzáadás után:" + V.kapacitás ()); V.addElement ( "között"); V.addElement ( "Vectors"); System.out.ln ("Jelenlegi kapacitás:" + V. kapacitás ()); // Kimeneti kapacitás 2 hozzáadás után: 2 Áramkapacitás: 4

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.

  1. Több szál is működhet az ArrayList-en egyidejűleg, ezért figyelembe vesszük szinkronizált. Az ArrayList-rel ellentétben csak egy szál működhet egy vektoron egyszerre; ezért hívják szinkronizált.
  2. A Java korai verziójában egyes osztályok és interfészek biztosítják az objektumok tárolásának módszereit, amelyeket Legacy osztályoknak hívtak. A vektor a Java Legacy osztályának egyike. Később ezeket a régi osztályokat újratervezték, hogy támogassák a Gyűjtemény osztályt, míg az ArrayList osztály egy standard Gyűjtemény osztály.
  3. Ha egy tömb korlátját teljes mértékben kihasználják, és új objektumot adnak a kimerült tömb mellé, akkor annak mérete mindkét esetben növekszik, azaz az ArrayList és a Vector esetében, de a különbség az, hogy az ArrayList esetében, ha nem adják meg a méretet a jelenlegi tömb 50% -ával növekszik, míg a Vector tömb méretében megduplázódik, ha a növekmény értéke nincs megadva.
  4. A Vector a számlálást és az Iterator alkalmazást használja egy tömb áthaladásához, míg az ArrayList csak az iterátort használja egy tömb áthaladásához.
  5. Mivel az ArrayList nincs szinkronizálva, és sok szál képes egyszerre működni rajta, jobb a teljesítmény, mint a Vector-en, amelyen egyszerre csak egy szál működhet.

Hasonlóságok:

  1. Az ArrayList és a Vector egyaránt a java.util csomagban van meghatározva.
  2. Az ArrayList és a Vector kiterjesztik az AbsractList osztályt.
  3. Az ArrayList és a Vector egyaránt megvalósítja a Lista felületet.
  4. Az ArrayList és a Vektorok egyaránt létrehoznak egy dinamikus tömböt, amely szükség szerint növekszik.
  5. Az ArrayList és a Vector is tartalmaz objektumhivatkozásokat.

Következtetés:

Végül azt mondom, hogy az ArrayList használata jobb, mint a Vector használata, mivel gyorsabban és jobban teljesít.