Gyakorlati alapok III.

Java-nyelv néhány összetett adattípusa

 

Tömblista (arraylist)

 

Ebben a fejezetben a legáltalánosabban és az egyik legjobban felhasználható dinamikus adattárolót ismerjük meg alapszinten.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

A tömblista (arraylist) egyesíti Az adatszerkezetek című fejezetcsomagban részletezett tömb és lista előnyeit. Tömbszerű adattároló szerkezete dinamikusan, gond nélkül hozható létre és a használat során beépített metódusai gyors és kényelmes felhasználást tesznek lehetővé.

 

Vizsgálatához először hozzunk létre a szabványos new paranccsal (Rombolás helyett építkezés: a new parancs és a konstruktor függvény) 1 objektumot belőle, azt sem feledve, hogy rutinjait először importálnunk kell a java.util csomagból:

 

import java.util.ArrayList;

 

Típusa legyen string és tároljon színelnevezéseket:

 

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

 

Az add() metódus segítségével tölrsük fel a tömblistát elemekkel:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.ArrayList;

public class Main {

public static void main(String[] args) {
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("Pink");
    colors.add("Grey");
    colors.add("Yellow");
    colors.add("Orange");
    System.out.println(colors);
    }
}

 

Végeredmény:

[Pink, Grey, Yellow, Orange]

 

Láthatjuk, hogy teljes tartalmához milyen könnyen hozzáférhettünk a System.out.println() függvénnyel. Az elemlekérdezés is ilyen egyszerű, például kérdezzünk rá a tömblista 1. elemére a get(int index) függvénnyel, amely nyilvánvalóan a 0. tömbindexen van:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.ArrayList;

public class Main {

public static void main(String[] args) {
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("Pink");
    colors.add("Grey");
    colors.add("Yellow");
    colors.add("Orange");
    System.out.println(colors);

    System.out.println(colors.get(0));
    }
}

 

Végeredmény:

[Pink, Grey, Yellow, Orange]

Pink

 

Természetesen a tömbtartalom kiírása működik for ciklussal is...

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.ArrayList;

public class Main {

public static void main(String[] args) {
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("Pink");
    colors.add("Grey");
    colors.add("Yellow");
    colors.add("Orange");

    for (int i = 0; i < colors.size(); i++) {
        System.out.print(colors.get(i) + " ");
        }
    }
}

 

Végeredmény:

Pink Grey Yellow Orange

 

...vagy éppen foreach ciklussal:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.ArrayList;

public class Main {

public static void main(String[] args) {
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("Pink");
    colors.add("Grey");
    colors.add("Yellow");
    colors.add("Orange");

    for (String i : colors) {
        System.out.print(i + " ");
        }
    }
}

 

Végeredmény:

Pink Grey Yellow Orange

 

Most állítsuk át a tömblista 4. elemét Black értékre, ezt a set(int index, String element) függvénnyel tehetjük meg:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.ArrayList;

public class Main {

public static void main(String[] args) {
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("Pink");
    colors.add("Grey");
    colors.add("Yellow");
    colors.add("Orange");

    System.out.println(colors);

    System.out.println(colors.set(3, "Black"));

    System.out.println(colors);
    }
}

 

Végeredmény:

[Pink, Grey, Yellow, Orange]

Orange

[Pink, Grey, Yellow, Black]

 

Egyetlen elem törlése a remove(int index) függvénnyel lehetséges. Most például töröljük a tömblista utolsó elemét (itt Orange):

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.ArrayList;

public class Main {

public static void main(String[] args) {
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("Pink");
    colors.add("Grey");
    colors.add("Yellow");
    colors.add("Orange");

    System.out.println(colors);

    colors.remove(3);

    System.out.println(colors);
    }
}

 

Végeredmény:

[Pink, Grey, Yellow, Orange]

[Pink, Grey, Yellow]

 

A tömblista bármikor rendezhető ésszerű, azaz adattípushoz tartozó szempontok szerint. Ehhez először importálnunk kell a szintén a java.util csomagban lévő Collections osztályt:

 

import java.util.Collections;
 

Az alábbi rendező hivatkozás (Collections.sort(colors)) az elemeket ABC-sorrendbe rendezi az elemek 1. betűje szerint:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.ArrayList;
import java.util.Collections;

public class Main {

public static void main(String[] args) {
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("Pink");
    colors.add("Grey");
    colors.add("Yellow");
    colors.add("Orange");
    System.out.println(colors);
    Collections.sort(colors);
    System.out.println(colors);
    }
}

 

Végeredmény:

[Pink, Grey, Yellow, Orange]
[Grey, Orange, Pink, Yellow]

 

A clear() parancs végleg törli az összes elemet. Meghívása után a tömblista teljesen üres lesz:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.ArrayList;
import java.util.Collections;

public class Main {

public static void main(String[] args) {
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("Pink");
    colors.add("Grey");
    colors.add("Yellow");
    colors.add("Orange");
    System.out.println(colors);
    colors.clear();
    System.out.println(colors);
    }
}

 

Végeredmény:

[Pink, Grey, Yellow, Orange]
[]

 

Nyilvánvalóan mindez működik más adattípus esetében is. Az alábbi példában int típusú tömblistában 4 db int típusú elemet hozunk létre (Numerikus egész című fejezet)...

 

ArrayList<Integer> numbers = new ArrayList<Integer>();

 

...majd listázzuk tartalmát és növekvő sorrendben rendezzük azt (Collections.sort(numbers)):

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.ArrayList;
import java.util.Collections;

public class Main {

public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(4);
    numbers.add(15);
    numbers.add(2);
    numbers.add(1);
    for (int i : numbers) {
        System.out.print(i + " ");
    }

    System.out.println();

    Collections.sort(numbers);
    for (int i : numbers) {
        System.out.print(i + " ");
        }
    }
}

 

Végeredmény:

4 15 2 1
1 2 4 15

 

ArrayList osztály hatékony működtetésére rengeteg további nagyon hasznos, beépített metódus áll rendelkezésre.