ArrayList (dynamický zoznam): Dátová štruktúra array list v Jave

Java ArrayList je dátová štruktúra, ktorá ti výrazne zjednoduší prácu s poľami. Na rozdiel od klasických polí umožňuje dynamicky meniť svoju veľkosť a ponúka celý rad praktických metód pre pridávanie, mazanie či vyhľadávanie prvkov. V článku sa pozrieme na to, ako ArrayList funguje, aké má výhody a obmedzenia, a v akých situáciách ti najlepšie poslúži.

Pojem array list označuje všeobecný typ dátovej štruktúry – dynamický zoznam založený na poli. V Jave ho reprezentuje trieda ArrayList, ktorá ponúka množstvo užitočných metód. Táto kolekcia reprezentuje dynamické pole objektov a umožňuje zmenu svojej veľkosti podľa potreby aplikácie.

Text citacia

autor citacia
autor citacia

Recommend

Odporúčame ti…

kjbnhjk

Recommend

Odporúčame ti…

sadsaddsads sdaas ddsa das da da sad sad ads ads sa dsa dsa das asd a sddas sd das dsa sdasdaasd

Vieš, že…

Vies ze

ArrayList kolekcia - hierarchia dedičnosti (zdroj: callicoder.com/static/b5d6144ae3fbf06551c077fea6cbd0a1/9cad3/java-arraylist-hierarchy.jpg)
ArrayList kolekcia – hierarchia dedičnosti (zdroj: callicoder.com/static/b5d6144ae3fbf06551c077fea6cbd0a1/9cad3/java-arraylist-hierarchy.jpg)

V článku sa dozvieš:

    ArrayList kolekcia – hierarchia dedičnosti (zdroj: callicoder.com/static/b5d6144ae3fbf06551c077fea6cbd0a1/9cad3/java-arraylist-hierarchy.jpg)

    ArrayList v Java – predstavenie dátovej štruktúry

    ArrayList kolekcia uľahčuje prácu so statickými poliami v Jave. Tie majú preddefinovanú fixnú veľkosť, ktorú treba stanoviť pri ich vytvorení. Ak je potrebné uložiť viac prvkov, než umožňuje kapacita poľa, programátor musí vytvoriť nové pole, skopírovať doň prvky a staré pole odstrániť.

    Kolekcia ArrayList tento proces zjednodušuje a automatizuje. Jej hlavnou vlastnosťou je dynamická zmena veľkosti, pričom pri prekročení kapacity sa automaticky zväčší o 50 % aktuálnej kapacity poľa. Bola predstavená v Jave 1.2 ako súčasť balíka java.util. Na rozdiel od Java Vector nie je synchronizovaná, čo znamená, že umožňuje rýchlejšie operácie, no je potrebné ju manuálne synchronizovať v prípade viacvláknového prostredia.

    7 min.Vector dátová štruktúra Java

    Java Vector: Dátová štruktúra a trieda Vector (dynamické pole) v Jave

    Predstavujeme ti Java Vector, dátovú štruktúru s konštruktormi, základnými operáciami, výhodami, nevýhodami a príkladovým kódom.

    ArrayList – konštruktory

    Na vytvorenie inštancie ArrayList môžeme použiť jeden z nasledujúcich konštruktorov:

     1. Prázdny ArrayList

    Vytvorí prázdny ArrayList s počiatočnou kapacitou 10.

    ArrayList<String> list = new ArrayList<>();

     2. ArrayList s počiatočnou kapacitou

    Umožňuje definovať počiatočnú kapacitu.

    ArrayList<String> list = new ArrayList<>(20);

     3. ArrayList skonštruovaný z kolekcie

    Inicializuje ArrayList prvkami z danej kolekcie.

    List<String> fruits = List.of("Apple", "Banana");
    ArrayList<String> list = new ArrayList<>(fruits);

    ArrayList – základné operácie

    K základným operáciám s ArrayList patria:

    • Pridávanie prvkov
      – Jednotlivo pomocou add()
      – Hromadne pomocou addAll()
    • Aktualizácia prvkov
      Pomocou metódy set() môžeme nahradiť prvok na určitom indexe.
    • Odstraňovanie prvkov
      Pomocou remove() podľa indexu alebo hodnoty.
      Odstránenie všetkých prvkov pomocou clear().
    • Prístup k prvkom
      Použitie metódy get() na získanie prvku podľa indexu.
    • Prechádzanie cez prvky
      Pomocou cyklov for, for-each, alebo cez Iterator.
    • Hľadanie prvkov
      Metódy contains() a indexOf() umožňujú vyhľadávať konkrétne hodnoty.
    • Zotriedenie prvkov
      Použitie metódy sort() so zadaným porovnávačom (Comparator).

    Dokumentácia k Java ArrayList

    Kompletný prehľad metód triedy ArrayList nájdeš v oficiálnej dokumentácii:

    Java ArrayList – výhody a nevýhody

    Výhody ArrayList

    • Dynamická zmena veľkosti bez manuálnej správy polí.
    • Vyšší výkon v porovnaní s triedou Vector, pretože nie je synchronizovaný.
    • Poskytuje jednoduchý spôsob iterácie cez prvky (napr. pomocou for-each cyklu).

    Nevýhody ArrayList

    • Nie je synchronizovaný, čo môže byť problém vo viacvláknových aplikáciách.
    • Kapacita sa automaticky zvýši o 50 % pri prekročení aktuálnej, čo môže byť náročné na pamäť.

    ArrayList – kedy ju použiť a kedy nie

    ArrayList je ideálna v nasledovných prípadoch:

    • Ak potrebujeme dynamickú kolekciu na ukladanie veľkého počtu prvkov bez nutnosti definovať ich počiatočný počet.
    • Nepotrebujeme synchronizáciu alebo sme schopní synchronizáciu zabezpečiť manuálne.
    • Vyžadujeme efektívne operácie čítania a pridávania prvkov.

    Naopak, nie je vhodná, ak:

    • Potrebujeme synchronizovanú kolekciu. V takom prípade radšej použi Vector alebo synchronizedList().
    • Často vykonávame operácie pridávania a odstraňovania prvkov na začiatku alebo v strede kolekcie (pre tieto prípady je vhodnejší LinkedList).

    Príklad použitia ArrayList v Jave

    Nasledujúci program demonštruje manipuláciu s dynamickým zoznamom ArrayList pri tvorbe nákupného zoznamu do obchodu:

    Main.java

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;
    
    public class Main {
        public static void main(String[] args) {
            ArrayList<String> shoppingList = new ArrayList<>();
    
            // Add some items to the shoppingList
            shoppingList.add("Bread");
            shoppingList.addAll(List.of("Milk", "Chocolate"));
            shoppingList.addLast("Butter");
    
            // Traversing elements using Iterator
            System.out.println("Shopping list:");
            Iterator it = shoppingList.iterator();
            while (it.hasNext())
                System.out.println(it.next());
            System.out.println();
    
            // Adding a new food to a specific index
            shoppingList.add(1, "Potatoes");
            System.out.println("Updated shopping list: ");
            System.out.println(shoppingList);
    
            // Remove chocolate
            shoppingList.remove("Chocolate");
            System.out.println("After removing chocolate:");
            System.out.println(shoppingList);
    
            // Sort finished shoppint list
            Collections.sort(shoppingList);
            System.out.println("Sorted shopping list: ");
            System.out.println(shoppingList);
    
            // Search item butter
            String search = "Butter";
            if (shoppingList.contains(search)) {
                System.out.println("Item '" + search + "' is at index " + shoppingList.indexOf(search) + " in the shopping list.");
            } else {
                System.out.println("Item '" + search + "' is not in the shopping list");
            }
        }
    }

    Výstup z tohto príkladu je:

    Výstup príkladu main.java arraylist

    Pripravili sme pre teba súbory so spomínaným príkladom vo forme kódu, ktorý si môžeš spustiť priamo v Jave. Stiahni si Java kód pre ArrayList tu.

    O autorovi

    Jozef Wagner

    Java Developer Senior

    Viac ako 10 rokov programujem v Jave, momentálne pracujem v msg life Slovakia ako Java programátor senior a pomáham zákazníkom implementovať ich požiadavky do poistného softvéru Life Factory. Vo voľnom čase si rád oddýchnem v lese, prípadne si zahrám nejakú dobrú počítačovú hru.

    Daj nám o sebe vedieť