Ajánlott, 2024

Szerkesztő Választása

Az ArrayList és a Vector közötti különbség Java-ban

Az ArrayList és a Vector mindkettő a Gyűjtemény keretrendszer hierarchiája. Az ArrayList és a Vector, mindkettőt olyan objektumok dinamikus tömbjének létrehozására használják, ahol a tömb nagysága megnőhet, amikor és amikor szükséges. Két alapvető különbség van, amelyek megkülönböztetik az ArrayList és a Vector azt, hogy a vektor a Legacy osztályokhoz tartozik, amelyeket később újraterveztek a gyűjteményosztályok támogatására, míg az ArrayList egy szabványos gyűjteményosztály. Egy másik fontos különbség az, hogy az ArrayList másrészt nem szinkronizált; A szinkronizált vektor.

Vizsgáljuk meg az alábbiakban bemutatott összehasonlító táblázat segítségével néhány más különbséget.

Összehasonlító táblázat

Az összehasonlítás alapjaTömb listaVektor
AlapvetőAz ArrayList osztály nem szinkronizált.A szinkronizált vektor osztály.
Legacy osztályAz ArrayList egy szabványos gyűjteményosztály.A vektor egy örökölt osztály, amelyet a gyűjteményosztály támogatására terveztek.
Osztálynyilatkozatosztály ArrayListosztály vektor
ÚjraelosztásHa nincs megadva, az ArrayList a méretének felére növekszik.Ha nincs megadva, akkor a vektort megnöveljük a méret kétszeresére.
TeljesítményMivel az ArrayList nem szinkronizált, gyorsabban működik, mint a Vector.Mivel a vektor szinkronizálva van, lassabban működik, mint az ArrayList.
Számlálás / IterátorAz ArrayList az Iterator felületet használja az ArrayListben tárolt objektumok áthaladásához.A vektor a felsorolást és az Iterator felületet használja a vektorokban tárolt objektumok áthaladásához.

Az ArrayList meghatározása

Az ArrayList a szokásos gyűjtési osztályok listájához tartozik. Az ArrayList osztály a java.util csomagon belül van definiálva, kiterjeszti az AbstractList osztályt, amely szintén szabványos gyűjteményosztály, és végrehajtja a listát is, amely a Gyűjtemény interfészekben definiált interfész. Java-ban a standard tömb mindig rögzített hosszúságú. Ez azt jelenti, hogy egyszer létrejött; nem dinamikusan növekszik vagy nem csökken. Tehát előzőleg meg kell ismernie a használt tömb hosszát. De néha előfordulhat, hogy a szükséges hosszúságot futásidőben feltárják, így az ilyen helyzet kezeléséhez a java bemutatta az ArrayList-et.

Az ArrayList egy osztály, amelyet egy tömb dinamikus létrehozására használnak, amely az objektumokra való hivatkozásokat tartalmazza. Ez a tömb mérete növekedhet, amikor és amikor szükséges. Az osztálynyilatkozat a következő:

 osztály ArrayList 

Itt az E az objektumok típusát határozza meg, amelyeket egy tömb fog tartani. A létrehozott tömb változó hosszúságú, és az objektumok hozzáadásakor vagy eltávolításakor növekszik és csökken a méret.

Az ArrayList nem szinkronizálva van, ami azt jelenti, hogy egynél több szál egyidejűleg működhet a tömbön. Például, ha az egyik szál objektum-hivatkozást ad hozzá a tömbhöz, és egy másik szál egy objektum hivatkozást eltávolít ugyanazon tömbből egyidejűleg. Dinamikus tömb létrehozása az ArrayList osztály használatával:

 ArrayList S1 = új ArrayList (); System.out.println ("S1 kezdeti mérete:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.println ("Az S1 hozzáadása után:" + S1); System.out.println ("S1 mérete hozzáadás után:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Az S1 törlés után:" + S1); System.out.println ("S1 méret törlés után:" + S1.size ()); // S1 kimeneti mérete: 0 Az adagolás után az S1 tartalmazza: [T, E, C, H]; Az S1 mérete a hozzáadás után: 4 A deléció után az S1 tartalmazza: [E, H] az S1 mérete deléció után: 2 

A fenti kódban láthatjuk; Létrehoztam egy sor típusú objektumot. Néhány objektumot hozzáadtam az S1 tömbhöz add () módszerrel, majd később néhány objektumot eltávolítottam () módszerrel. Megfigyelheted, ha nem adod meg a tömb kezdeti méretét, akkor a '0' hosszú lesz. Ahogy látható, a tömb növekszik, és az elemek hozzáadásakor és törlésénél mérete csökken.

A vektor meghatározása

A Vector egy örökölt osztály, amelyet újból terveztek, hogy támogassa a Gyűjtemény keret hierarchiában található gyűjteményosztályt. A vektorosztályt a java.util csomagban is definiáljuk, amelyet az AbstractList osztály kiterjeszt, és a List interfész segítségével valósít meg. A Vector osztály a következőképpen van bejelentve:

 osztály vektor 

Itt az E definiálja a tömbben tárolt objektum típusát. A Vector osztály használatával létrehozott tömb változó hosszúságú. Ha a növekmény nincs megadva, a méret kétszeresére nő. Megértjük a tömbök létrehozását a Vector segítségével.

 V = új vektor (1, 1); V.addElement ( "Tech"); V.addElement ( "különbségek"); System.out.println ("Kapacitás 2 hozzáadás után:" + V. kapacitás ()); V.addElement ( "között"); V.addElement ( "Vectors"); System.out.println ("Aktuális kapacitás:" + V.kapacitás () "; // Kimeneti kapacitás 2 hozzáadás után: 2 Aktuális kapacitás: 4 

A fenti kódban láthatjuk, hogy a vektor-konstruktor méretét és növekvő értékét külön megemlítettem, a húrobjektumok tömbjének bejelentése mellett. Megfigyelhetjük tehát, hogy a tömbvégződés határértékeként a deklaráció során a konstruktornak adott értékkel növekszik.

Az ArrayList és a vektorok közötti különbségek

  1. Többszörös szálak is működhetnek az ArrayList-en egyidejűleg, ezért nem szinkronizáltnak tekinthető. Az ArrayList-szel ellentétben csak egyetlen szál működhet egy vektorban egyszerre; így azt szinkronizálják .
  2. A Java egy korai változatában egyes osztályok és interfészek biztosítják az objektumok tárolására szolgáló módszereket, amelyeket a Legacy osztályoknak hívtak. Később ezeket az örökölt osztályokat újraterveztük, hogy támogassák a gyűjteményosztályt, míg az ArrayList osztály egy szabványos gyűjteményosztály.
  3. Amikor egy tömb határértéke teljes mértékben kihasználva és egy új objektum kerül a kimerült tömb mellé, annak mérete mindkét esetben növekszik, azaz az ArrayList-ben és a vektorban is, de a különbség az, hogy az ArrayListben, ha nincs megadva a méret az aktuális tömböt 50% -kal növekszik, míg a Vector tömbben a méret kétszeresére nő, ha a növekményérték nincs megadva.
  4. A vektor az Enumeration-ot és az Iterator-ot használja egy tömb áthaladásához, míg az ArrayList csak iterátort használ egy tömb áthaladásához.
  5. Mivel az ArrayList unsynchronized és sok szál egyszerre működhet rajta, teljesítménye jobb, mint a Vector, amelynél egyszerre csak egy szál működhet.

Hasonlóságok:

  1. Az ArrayList és a Vector mindkettőt a java.util csomag tartalmazza.
  2. Az ArrayList és a Vector egyaránt kiterjeszti az AbsractList osztályt.
  3. Az ArrayList és a Vector mindkettő végrehajtja a List interfészt.
  4. Az ArrayList és a Vectors mindkettőt arra használják, hogy egy dinamikus tömböt hozzon létre, amely szükség szerint növekszik.
  5. Az ArrayList és a Vector mindkét objektum hivatkozást tartalmaz.

Következtetés:

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

Top