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.
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:
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:
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...
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:
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:
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):
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:
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:
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)):
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.