Java ArrayList je součástí Java rámec sbírek a je to třída balíčku java.util. Poskytuje nám dynamická pole v Javě. Může to být pomalejší než standardní pole, ale může být užitečné v programech, kde je potřeba spousta manipulace s polem. Tato třída se nachází v java.util balík. Hlavní výhoda ArrayList v Javě je, že pokud deklarujeme pole, musíme zmínit velikost, ale v ArrayList není nutné uvádět velikost ArrayList. Pokud chcete uvést velikost, můžete to udělat.
Obsah
- Co je ArrayList v Javě?
- Příklad Java ArrayList
- Důležité vlastnosti ArrayList v Javě
- Konstruktory v ArrayList
- ArrayList v metodách Java
- Operace prováděné v ArrayList
- Složitost Java ArrayList
- Výhody Java ArrayList
- Nevýhody Java ArrayList
- Závěr
- Časté dotazy k ArrayList
Co je ArrayList v Javě?
ArrayList je třída Java implementovaná pomocí rozhraní List. Java ArrayList, jak název napovídá, poskytuje funkce dynamického pole, kde velikost není pevně dána jako pole. Jako součást rámce Collections má také mnoho funkcí, které nejsou k dispozici u polí.

Ilustrace:
Podívejme se na ArrayList s typem objektu Integer, který je v něm uložen s obrázkem.
linuxové zkratky

Příklad Java ArrayList
Příklad 1: Následující implementace ukazuje, jak vytvořit a používat ArrayList s uvedením jeho velikosti.
Jáva // Java program to demonstrate the // working of ArrayList import java.io.*; import java.util.*; class ArrayListExample { public static void main(String[] args) { // Size of the // ArrayList int n = 5; // Declaring the ArrayList with // initial size n ArrayList arr1 = nový ArrayList (n); // Deklarace ArrayList ArrayList arr2 = nový ArrayList (); // Tisk seznamu ArrayList System.out.println('Pole 1:' + arr1); System.out.println('Pole 2:' + arr2); // Přidání nových prvků na // konec seznamu pro (int i = 1; i<= n; i++) { arr1.add(i); arr2.add(i); } // Printing the ArrayList System.out.println('Array 1:' + arr1); System.out.println('Array 2:' + arr2); } }> Výstup
Array 1:[] Array 2:[] Array 1:[1, 2, 3, 4, 5] Array 2:[1, 2, 3, 4, 5]>
Vysvětlení výše uvedeného programu:
ArrayList je dynamické pole a při jeho vytváření nemusíme zadávat velikost, velikost pole se automaticky zvětšuje, když dynamicky přidáváme a odebíráme položky. Ačkoli skutečná implementace knihovny může být složitější, následující je velmi základní myšlenka vysvětlující fungování pole, když se pole zaplní a pokud se pokusíme přidat položku:
- Vytváří větší paměť na haldě paměti (například paměť dvojnásobné velikosti).
- Zkopíruje aktuální paměťové prvky do nové paměti.
- Nová položka je přidána nyní, protože je nyní k dispozici větší paměť.
- Vymažte starou paměť.
Důležité vlastnosti ArrayList v Javě
- ArrayList dědí AbstractList třídy a implementuje Rozhraní seznamu .
- ArrayList je inicializován podle velikosti. Velikost se však automaticky zvětší, pokud kolekce roste nebo se zmenšuje, pokud objektů jsou odstraněny ze sbírky.
- Java ArrayList nám umožňuje náhodný přístup k seznamu.
- ArrayList nelze použít pro obalová třída pro takové případy.
- ArrayList v Javě může být viděn jako a vektor v C++ .
- ArrayList není synchronizován. Jeho ekvivalentní synchronizovaná třída v Javě je Vektor .
Pojďme pochopit, Java ArrayList do hloubky . Podívejte se na níže uvedený obrázek:

Na výše uvedeném obrázku AbstractList , CopyOnWriteArrayList , a AbstractSequentialList jsou třídy, které implementují rozhraní seznamu. V každé ze zmíněných tříd je implementována samostatná funkcionalita. Oni jsou:
- AbstractList: Tato třída se používá k implementaci nemodifikovatelného seznamu, pro který je potřeba pouze rozšířit tuto třídu AbstractList a implementovat pouze dostat() a velikost() metody.
- CopyOnWriteArrayList: Tato třída implementuje rozhraní seznamu. Jedná se o vylepšenou verzi ArrayList ve kterém jsou všechny úpravy (přidat, nastavit, odebrat atd.) implementovány vytvořením nové kopie seznamu.
- AbstractSequentialList: Tato třída implementuje Rozhraní sběru a třída AbstractCollection. Tato třída se používá k implementaci nemodifikovatelného seznamu, pro který je potřeba pouze rozšířit tuto třídu AbstractList a implementovat pouze dostat() a velikost() metody.
Konstruktory v ArrayList v Javě
Abychom mohli vytvořit ArrayList, musíme vytvořit objekt třídy ArrayList. Třída ArrayList se skládá z různých konstruktéři které umožňují případné vytvoření seznamu polí. V této třídě jsou k dispozici následující konstruktory:
1. ArrayList()
Tento konstruktor se používá k vytvoření prázdného seznamu polí. Pokud si přejeme vytvořit prázdný ArrayList s názvem arr , pak jej lze vytvořit jako:
ArrayList arr = new ArrayList();>
2. ArrayList (kolekce c)
Tento konstruktor se používá k vytvoření seznamu polí inicializovaného prvky z kolekce c. Předpokládejme, že chceme vytvořit ArrayList arr, který obsahuje prvky přítomné v kolekci c, pak jej lze vytvořit jako:
ArrayList arr = new ArrayList(c);>
3. ArrayList (kapacita int)
Tento konstruktor se používá k sestavení seznamu polí se zadanou počáteční kapacitou. Předpokládejme, že chceme vytvořit ArrayList s počáteční velikostí N, pak jej lze vytvořit jako:
panda tát
ArrayList arr = new ArrayList(N);>
Metody Java ArrayList
| Metoda | Popis |
|---|---|
| add(int index, Object element) | Tato metoda se používá k vložení určitého prvku na konkrétní index pozice v seznamu. |
| přidat (objekt o) | Tato metoda se používá k připojení určitého prvku na konec seznamu. |
| addAll(kolekce C) | Tato metoda se používá k připojení všech prvků z konkrétní kolekce na konec uvedeného seznamu v takovém pořadí, aby byly hodnoty vráceny iterátorem zadané kolekce. |
| addAll(int index, kolekce C) | Slouží k vložení všech prvků začínajících na zadané pozici z konkrétní kolekce do uvedeného seznamu. |
| Průhledná() | Tato metoda se používá k odstranění všech prvků z libovolného seznamu. |
| klon() | Tato metoda se používá k vrácení mělké kopie ArrayList v Javě. |
| obsahuje? (Objekt o) | Vrátí hodnotu true, pokud tento seznam obsahuje zadaný prvek. |
| secureCapacity? (int minCapacity) | V případě potřeby zvýší kapacitu této instance ArrayList, aby se zajistilo, že může obsahovat alespoň počet prvků určený argumentem minimální kapacity. |
| pro každého? (spotřebitelská akce) | Provede danou akci pro každý prvek Iterable, dokud nejsou zpracovány všechny prvky nebo akce nevyvolá výjimku. |
| získat? (int index) | Vrátí prvek na zadané pozici v tomto seznamu. |
| indexOf(Objekt O) | Index prvního výskytu určitého prvku je buď vrácen, nebo -1 v případě, že prvek není v seznamu. |
| je prázdný?() | Vrátí hodnotu true, pokud tento seznam neobsahuje žádné prvky. |
| lastIndexOf(Object O) | Index posledního výskytu určitého prvku je buď vrácen nebo -1 v případě, že prvek není v seznamu. |
| listIterator?() | Vrátí iterátor seznamu nad prvky v tomto seznamu (ve správném pořadí). |
| listIterator? (int index) | Vrátí iterátor seznamu nad prvky v tomto seznamu (ve správném pořadí), počínaje zadanou pozicí v seznamu. |
| odstranit? (int index) | Odebere prvek na zadané pozici v tomto seznamu. |
| odstranit? (Objekt o) | Odebere první výskyt zadaného prvku z tohoto seznamu, pokud je přítomen. |
| odstranit vše? (kolekce c) | Odebere z tohoto seznamu všechny jeho prvky, které jsou obsaženy v zadané kolekci. |
| removeIf? (Predikátový filtr) | Odebere všechny prvky této kolekce, které splňují daný predikát. |
| removeRange? (int fromIndex, int toIndex) | Odebere z tohoto seznamu všechny prvky, jejichž index je mezi fromIndex, včetně, a toIndex, bez. |
| keepAll? (Kolekce c) | Zachová pouze prvky v tomto seznamu, které jsou obsaženy v zadané kolekci. |
| set? (index int, prvek E) | Nahradí prvek na zadané pozici v tomto seznamu zadaným prvkem. |
| velikost?() | Vrátí počet prvků v tomto seznamu. |
| rozdělovač? () | Vytvoří rozbočovač s pozdní vazbou a rychlým selháním nad prvky v tomto seznamu. |
| subList? (int fromIndex, int toIndex) | Vrátí pohled na část tohoto seznamu mezi zadaným fromIndex, včetně, a toIndex, bez. |
| toArray() | Tato metoda se používá k vrácení pole obsahujícího všechny prvky v seznamu ve správném pořadí. |
| toArray(Object[] O) | Používá se také k vrácení pole obsahujícího všechny prvky v tomto seznamu ve správném pořadí, stejně jako předchozí metoda. |
| trimToSize() | Tato metoda se používá k oříznutí kapacity instance ArrayList na aktuální velikost seznamu. |
Poznámka: Můžete také vytvořit obecný ArrayList:
// Vytvoření obecného celého čísla ArrayList
ArrayList arrli = new ArrayList();
Některé klíčové body ArrayList v Javě
- ArrayList je podtržená datová struktura Resizable Array nebo Growable Array.
- Duplikáty ArrayList jsou povoleny.
- Objednávka je zachována.
- Heterogenní předměty jsou povoleny.
- Nulové vložení je možné.
Podívejme se, jak provést některé základní operace na seznamu ArrayList, jak je uvedeno, o kterých budeme dále diskutovat spolu s implementací každé operace.
- Přidání prvku do seznamu/Přidat prvek
- Změna elementů/ Set element
- Odebrání prvků/Vymazání prvku
- Iterační prvky
- získat prvky
- přidat prvky mezi dvě čísla
- Řazení prvků
- Velikost ArrayList
Operace prováděné v ArrayList
1. Přidávání prvků
Abychom přidali prvek do ArrayList, můžeme použít metoda add(). . Tato metoda je přetížena prováděním více operací na základě různých parametrů. Jsou následující:
- add(Object): Tato metoda se používá k přidání prvku na konec ArrayList.
- add(int index, Object): Tato metoda se používá k přidání prvku na konkrétní index v ArrayList.
Níže je uvedena implementace výše uvedeného přístupu:
Jáva // Java Program to Add elements to An ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Array of string type ArrayListal = new ArrayList(); // Přidání prvků do ArrayList // Vlastní vstupy al.add('Geeks'); al.add('Geekové'); // Zde se zmiňujeme o indexu //, ke kterému má být přidán al.add(1, 'For'); // Tisk všech prvků v ArrayList System.out.println(al); } }> Výstup
[Geeks, For, Geeks]>
2. Změna prvků
Po přidání prvků, pokud chceme prvek změnit, lze to provést pomocí soubor() metoda. Protože je ArrayList indexován, na prvek, který chceme změnit, odkazuje index prvku. Proto tato metoda bere index a aktualizovaný prvek, který je třeba vložit do tohoto indexu.
Níže je uvedena implementace výše uvedeného přístupu:
Jáva // Java Program to Change elements in ArrayList // Importing all utility classes import java.util.*; // main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Arraylist object of string type ArrayListal = new ArrayList(); // Přidání prvků do Arraylistu // Vlastní vstupní prvky al.add('Geeks'); al.add('Geekové'); // Přidání určení indexu, který se má přidat al.add(1, 'Geeks'); // Tisk prvků Arraylist System.out.println('Initial ArrayList ' + al); // Nastavení prvku na 1. indexu al.set(1, 'For'); // Tisk aktualizovaného seznamu polí System.out.println('Updated ArrayList ' + al); } }> Výstup
Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>
3. Odebírání prvků
Abychom odstranili prvek z ArrayList, můžeme použít metoda remove(). . Tato metoda je přetížena prováděním více operací na základě různých parametrů. Jsou následující:
- odstranit (Objekt): Tato metoda se používá k jednoduchému odstranění objektu z ArrayList. Pokud existuje více takových objektů, pak se první výskyt objektu odstraní.
- remove(int index): Protože je ArrayList indexován, tato metoda přebírá celočíselnou hodnotu, která jednoduše odstraní prvek přítomný na tomto konkrétním indexu v ArrayList. Po odstranění prvku se všechny prvky přesunou doleva, aby zaplnily prostor a indexy objektů se aktualizují.
Příklad:
Stáhněte si youtube vlc media playerJáva
// Java program to Remove Elements in ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an object of arraylist class ArrayListal = new ArrayList(); // Přidání prvků do ArrayList // Vlastní přidání al.add('Geeks'); al.add('Geekové'); // Přidání prvku na konkrétní index al.add(1, 'For'); // Tisk všech prvků ArrayList System.out.println('Initial ArrayList ' + al); // Odebrání prvku shora ArrayList al.remove(1); // Tisk aktualizovaných prvků Arraylist System.out.println('Po odstranění indexu ' + al); // Odstranění tohoto prvku slova v ArrayList al.remove('Geeks'); // Nyní tiskne aktualizovaný ArrayList System.out.println('Po odstranění objektu ' + al); } }> Výstup
Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>
4. Iterace ArrayList
Existuje několik způsobů, jak iterovat ArrayList. Nejznámější způsoby jsou pomocí základní pro smyčku v kombinaci s a metoda get(). získat prvek na konkrétním indexu a pokročilé pro smyčku .
Příklad
Jáva // Java program to Iterate the elements // in an ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Arraylist of string type ArrayListal = new ArrayList(); // Přidání prvků do ArrayList // pomocí standardní metody add() al.add('Geeks'); al.add('Geekové'); al.add(1, 'Pro'); // Pomocí metody Get a cyklu // for for (int i = 0; i< al.size(); i++) { System.out.print(al.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : al) System.out.print(str + ' '); } }> Výstup
Geeks For Geeks Geeks For Geeks>
5. Získejte prvky
Jáva // Java program to get the elemens in ArrayList import java.io.*; import java.util.*; class GFG { public static void main (String[] args) { ArrayList seznam = new ArrayList(); // přidání seznamu čísel.add(9); seznam.add(5); seznam.add(6); System.out.println(seznam); // získání metody Integer n= list.get(1); System.out.println('číslo na indexu 1 je:'+n); } }> Výstup
[9, 5, 6] at indext 1 number is:5>
6. Přidejte prvky mezi dvě čísla
Jáva // Java program to add the elements // between two numbers in ArrayList import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList seznam = new ArrayList(); seznam.add(1); seznam.add(2); seznam.add(4); System.out.println(seznam); // vložení chybějícího prvku 3 list.add(2, 3); System.out.println(seznam); } }> Výstup
[1, 2, 4] [1, 2, 3, 4]>
7. ArrayList Třídit
Jáva // Java Program for ArrayList Sorting import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList seznam = new ArrayList(); seznam.add(2); seznam.add(4); seznam.add(3); seznam.add(1); System.out.println('Před řazením seznamu:'); System.out.println(seznam); Collections.sort(seznam); System.out.println('po seřazení seznamu:'); System.out.println(seznam); } }> Výstup
Before sorting list: [2, 4, 3, 1] after sorting list: [1, 2, 3, 4]>
8. Velikost prvků
Jáva // Java program to find the size // of elements of an ArrayList import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList seznam = new ArrayList(); seznam.add(1); seznam.add(2); seznam.add(3); list.add(4); int b = seznam.velikost(); System.out.println('Velikost je :' + b); } }> Výstup
The size is :4>
Složitost Java ArrayList
Úkon | Časová složitost jak převést řetězec na celé číslo java | Vesmírná složitost |
|---|---|---|
Vložení prvku do ArrayList | O(1) | NA) |
Odebrání prvku z ArrayList | NA) | O(1) |
Procházení prvků v ArrayList | NA) | NA) imessage hry s androidem |
Nahrazení prvků v ArrayList | O(1) | O(1) |
ArrayList v Javě je třída v rámci Java Collections, která implementuje rozhraní List. Zde jsou výhody a nevýhody použití ArrayList v Javě.
Výhody Java ArrayList
- Dynamická velikost: ArrayList může dynamicky růst a zmenšovat velikost, takže je snadné přidávat nebo odebírat prvky podle potřeby.
- Snadné použití: ArrayList se snadno používá, takže je oblíbenou volbou mnoha vývojářů Java.
- Rychlý přístup: ArrayList poskytuje rychlý přístup k prvkům, protože je implementován jako pole pod kapotou.
- Uspořádaná kolekce: ArrayList zachovává pořadí prvků, což vám umožňuje přistupovat k prvkům v pořadí, v jakém byly přidány.
- Podporuje hodnoty null: ArrayList může ukládat hodnoty null, což je užitečné v případech, kdy je třeba znázornit absenci hodnoty.
Nevýhody Java ArrayList
- Pomalejší než pole: ArrayList je pomalejší než pole pro určité operace, jako je vkládání prvků doprostřed seznamu.
- Zvýšené využití paměti: ArrayList vyžaduje více paměti než pole, protože potřebuje zachovat svou dynamickou velikost a zvládnout změnu velikosti.
- Není bezpečný pro vlákna: ArrayList není bezpečný pro vlákna, což znamená, že k seznamu může přistupovat a upravovat jej souběžně více vláken, což vede k potenciálním sporům a poškození dat.
- Snížení výkonu: Výkon ArrayList se může snižovat se zvyšujícím se počtem prvků v seznamu, zejména u operací, jako je vyhledávání prvků nebo vkládání prvků doprostřed seznamu.
Závěr
Body, které je třeba si zapamatovat z tohoto článku, jsou uvedeny níže:
- ArrayList je součástí rámce Collections. Zdědí třídu AbstractList a implementuje rozhraní List.
- ArrayList je implementace dynamického pole.
- ArrayList lze inicializovat pomocí různých typů konstruktorů, jako je bez parametrů, předávání kolekce jako parametr a předávání celého čísla jako parametru.
- Operace lze provádět v ArrayList následovně: Přidání, odebrání, iterace a řazení.
Časté dotazy k ArrayList
Co je ArrayList v Javě?
ArrayList v Javě je součástí frameworku Collections. Slouží k ukládání prvků a velikost je měnitelná.
Jak jsou data uložena v ArrayList?
ArrayList může ukládat data do zaplnění velikosti ArrayList, poté se velikost ArrayList zdvojnásobí, pokud chceme uložit další prvky.
Umožňuje ArrayList duplikáty?
Ano, ArrayList umožňuje ukládat duplicitní hodnoty.