Rozdíl mezi seznamem polí a vektorem v Javě
Obsah
ArrayList a Vector jsou třídy v hierarchii kolekce Framework. ArrayList a Vector se používají k vytvoření dynamického pole objektů, kde se pole může podle potřeby zvětšit. Existují dva základní rozdíly, které odlišují ArrayList a Vector je to, že Vector patří do tříd Legacy, které byly později reengineered pro podporu tříd kolekce, zatímco ArrayList je standardní kolekce kolekce. Dalším důležitým rozdílem je to, že ArrayList je na druhé straně nesynchronizovaný; Vektor je synchronizován.
Prozkoumejme některé další rozdíly pomocí níže uvedeného srovnávacího grafu.
- Srovnávací tabulka
- Definice
- Klíčové rozdíly
- Podobnosti
- Závěr
Srovnávací tabulka
Základ pro srovnání | ArrayList | Vektor |
---|---|---|
Základní | Třída ArrayList není synchronizována. | Třída vektorů je synchronizována. |
Starší třída | ArrayList je standardní kolekce Collection. | Vektor je stará třída, přepracovaná tak, aby podporovala třídu kolekce. |
Prohlášení o třídě | třída ArrayList | třída Vector |
Přerozdělení | Pokud není uvedeno, ArrayList se zvýší o polovinu své velikosti. | Pokud není zadán, vektor se zvýší na dvojnásobek jeho velikosti. |
Výkon | Protože ArrayList je nesynchronizovaný, pracuje rychleji než Vector. | Protože je Vector synchronizován, pracuje pomaleji než ArrayList. |
Výčet / Iterátor | ArrayList používá rozhraní Iterator k procházení objektů uložených v ArrayList. | Vektor používá Enumeraci a rozhraní Iterátoru k procházení objektů uložených ve Vektorech. |
Definice ArrayList
ArrayList patří do seznamu standardních tříd kolekce. Třída ArrayList je definována uvnitř java.util balíček, rozšiřuje AbstractList třída, která je také standardní třídou kolekce, a také implementuje Seznam, rozhraní definované v kolekcích rozhraní. V Javě má standardní pole vždy pevnou délku. To znamená jednou vytvořené; dynamicky se nezvětšuje ani zmenšuje. Měli byste tedy mít předchozí znalosti o délce pole, které používáte. Někdy se však může stát, že je požadovaná délka odhalena za běhu, takže pro zvládnutí této situace java představil ArrayList.
ArrayList je třída používaná pro dynamické vytváření pole, které obsahuje odkazy na objekty. Toto pole by se mohlo podle potřeby zvětšit. Prohlášení o třídě je následující:
třída ArrayList Zde E určuje typ objektů, které bude pole obsahovat. Vytvořené pole má proměnnou délku a při přidávání nebo odebírání objektů ze seznamu se zvětšuje a zmenšuje. ArrayList není synchronizován, což znamená, že v poli může současně pracovat více než jedno vlákno. Pokud například jeden podproces přidává odkaz na objekt do pole a jiný podproces odebírá odkaz na objekt ze stejného pole současně. Vytvoření dynamického pole pomocí třídy ArrayList: ArrayList Ve výše uvedeném kódu to vidíte; Vytvořil jsem řadu objektů typu řetězce. Některé objekty jsem přidal do pole S1 pomocí metody add () a později jsem některé objekty odstranil pomocí metody remove (). Můžete pozorovat, pokud nezadáte počáteční velikost pole, bude mít délku „0“. Jak vidíte, pole se při přidávání a mazání prvků zmenšuje a zmenšuje. Vector je třída Legacy, která je znovu navržena tak, aby podporovala třídu kolekce v hierarchii kolekce Framework. Třída vektorů je také definována v java.util balíček, rozšířen o AbstractList třídy a implementovány Seznam rozhraní. Třída Vector je deklarována následovně: třída Vector Zde E definuje typ objektu, který bude uložen v matici. Pole vytvořené pomocí třídy Vector má proměnnou délku. Pokud není zadán přírůstek, zvyšuje se dvojnásobně. Pojďme pochopit vytvoření pole pomocí Vector. Vektor Ve výše uvedeném kódu vidíte, že jsem zejména zmínil velikost a přírůstkovou hodnotu ve konstruktoru Vector, a to při deklarování pole řetězcových objektů. Můžete tedy pozorovat, že jakmile je limit pole dokončen, zvyšuje se o hodnotu poskytovanou konstruktoru při deklaraci. Na závěr říkám, že použití ArrayList je lepší než použití Vector, protože funguje rychleji a lépe.Definice vektoru
Podobnosti:
Závěr: