Srovnávací graf
Základ pro porovnání | Seznam | ArrayList |
---|---|---|
Základní | Seznam je rozhraní | ArrayList je standardní třídou kolekce. |
Syntax | Seznam rozhraní | třída ArrayList |
Rozšíření / implementace | Rozhraní seznamu rozšiřuje rámec kolekce. | ArrayList rozšiřuje AbstractList a implementuje seznamové rozhraní. |
Jmenný prostor | System.Collections.Generic. | System.Collections. |
Práce | Používá se k vytvoření seznamu prvků (objektů), které jsou přiřazeny jejich indexovým číslům. | ArrayList se používá k vytvoření dynamického pole, které obsahuje objekty. |
Definice seznamu
Seznam je rozhraní, které rozšiřuje rámec kolekce . Rozhraní seznamu popisuje sbírku prvků, které jsou uspořádány postupně. Rozhraní seznamu je implementováno následujícími standardními třídami kolekce jako ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack . Rozhraní seznamu obsahuje prvky, které jsou spojeny s jejich indexovými čísly. K prvku v seznamu můžete přistupovat podle jeho pozice (indexu) v seznamu. Seznam vytvořený pomocí rozhraní Seznam začíná s nulovým indexem.
Kromě metod zděděných sbírkovým rámcem definuje seznam rozhraní také vlastní metodu. Metody přidané rozhraním List jsou: add (int, E) a addAll (int, Collection) . Tyto metody přidávají prvek do seznamu podle svého indexu. Metody uvnitř seznamu mohou vyvolat výjimku, jako je například UnsupportedOperationException, pokud metoda nemůže seznam změnit. Když jeden objekt v seznamu je nekompatibilní s jiným objektem v seznamu, pak ClassCastException je thrown.Null prvky nejsou povoleny v seznamu, pokud se pokusíte vložit null objekt do seznamu, NullPointerException je vyvolána.
Element ze seznamu můžete získat metodou get () . Hodnotu prvku v seznamu můžete nastavit pomocí metody set () . Seznam můžete také získat ze seznamu pomocí dílčího seznamu metod () . Je vhodné pracovat s podřízeným seznamem místo seznamu.
Definice ArrayList
Jednou ze standardních tříd kolekce je ArrayList, který rozšiřuje třídu AbstractList a také implementuje rozhraní List . Třída ArrayList se používá k vytvoření dynamických polí, která rostou a zmenšují se vždy, když je požadována. Seznam vytvořený pomocí třídy ArrayList není nic jiného než pole objektů. V jazyce Java má standardní pole pevnou délku, takže musíte předem znát velikost pole. Může se však stát, že nebudete vědět, jakou délku pole potřebujete do doby spuštění. Rámec kolekce proto zavedl třídu ArrayList k překonání tohoto problému.
ArrayList má konstruktory, které vytvářejí pole s jeho vnitřní kapacitou. Ačkoli se kapacita objektu třídy ArrayList zvyšuje automaticky, když jsou prvky přidány do pole, přesto můžete ručně zvýšit kapacitu objektu ArrayList pomocí metody removeCapacity () . Je lepší zvýšit kapacitu pole zpočátku místo přerozdělení paměti později. Protože přerozdělení je nákladnější než přidělení paměti najednou.
Klíčové rozdíly mezi seznamem a seznamem
- Jedním z nejdůležitějších rozdílů mezi Listem a ArrayListem je, že seznam je rozhraní a ArrayList je standardní třídou Collection.
- Rozhraní seznamu rozšiřuje rámec kolekce, zatímco ArrayList rozšiřuje třídu AbstractList a implementuje rozhraní seznamu .
- Obor názvů pro rozhraní Seznam je System.Collection.Generic vzhledem k tomu, že obor názvů pro ArrayList je System.Collection .
- Rozhraní seznamu vytvoří soubor prvků, které jsou uloženy v sekvenci a jsou identifikovány nebo zpřístupněny jejich indexovým číslem. Na druhé straně ArrayList vytvoří pole objektů, kde může pole dynamicky růst, když je to požadováno.
Závěr:
ArrayList překonává problém statického pole ve standardní Javě, tj. Pole nemůže růst, jakmile je vytvořeno. Když je pole vytvořeno pomocí ArrayList, vytvoří se dynamické pole, které může v případě potřeby růst a zmenšit velikost. Standardní třída ArrayList rozšiřuje rozhraní seznamu.