
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 alapja | Tömb lista | Vektor |
---|---|---|
Alapvető | Az ArrayList osztály nem szinkronizált. | A szinkronizált vektor osztály. |
Legacy osztály | Az 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álynyilatkozat | osztály ArrayList | osztály vektor |
Újraelosztás | Ha 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ény | Mivel 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átor | Az 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
- 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 .
- 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.
- 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.
- 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.
- 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:
- Az ArrayList és a Vector mindkettőt a java.util csomag tartalmazza.
- Az ArrayList és a Vector egyaránt kiterjeszti az AbsractList osztályt.
- Az ArrayList és a Vector mindkettő végrehajtja a List interfészt.
- 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.
- 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.