Erinevus lehekülje "Java:Kogumid" redaktsioonide vahel
(→Loend) |
|||
70. rida: | 70. rida: | ||
// kõik elemendid indeksiga 1 või suuremad nihutatakse ühe võrra edasi: | // kõik elemendid indeksiga 1 või suuremad nihutatakse ühe võrra edasi: | ||
// loend: 1, 2, 3, 4 | // loend: 1, 2, 3, 4 | ||
+ | |||
+ | numbrid.set(1, 7); // asendame elemendi väärtuse positsioonil 1: | ||
+ | // loend: 1, 7, 3, 4 | ||
numbrid.clear(); // tühjendame | numbrid.clear(); // tühjendame |
Redaktsioon: 27. veebruar 2015, kell 00:49
Kogumid (ingl Collections) on andmestruktuurid, mis hoiavad objektide hulka.
Massiiv
Massiiv (array) on kõige lihtsam kogumitüüp. Peaaegu kõik teised kogumid saab realiseerida massiivide peal (ja seda paljud reaalselt ka kasutavad). Massiiv on fikseeritud pikkusega kogum - peale massiivi loomist pikkust enam muuta ei saa. Massiivi kõik elemendid peavad olema sama tüüpi (või alamtüüpi). Massiivis saab kasutada ka primitiivseid andmetüüpe elementidena.
Elementide indeksid hakkavad 0-st. Ehk siis massiivi esimese elemendi indeks on 0 jne.
Massiiv on tegelikult objekt, aga kuna seda kasutatakse väga tihti, siis massiiviga opereerimiseks on loodud erandlik süntaks.
Massiivi esimene element massiiv[0]
Massiivi pikkus massiiv.length
Massiivi viimane element massiiv[massiiv.length - 1]
Koodnäide:
<source lang="java"> int[] massiiv = new int[10]; massiiv[0] = 1; massiiv[9] = 10; //massiiv[10] ei mahu enam massiivi, kuna on 11. element
System.out.println(massiiv[0]); // 1 System.out.println(massiiv[1]); // 0 - int massiivi element on vaikimisi 0
// algväärtustame 1..10 for (int i = 0; i < massiiv.length; i++) { massiiv[i] = i + 1; // indeks liigub 0..9, väärtused 1..10 } // leiame elementide summa int sum = 0; for (int i = 0; i < massiiv.length; i++) { sum = sum + massiiv[i]; } System.out.println("Massiivi elementide summa: " + sum); </source>
Loend
Loend (list) on korrastatud (järjekord säilib) andmekogum. Kui lisada elemendid loendisse, siis hiljem on nad lugemisel täpselt samas järjekorras kui neid sisestati.
Javas on implementeeritud erinevaid loendeid. Kirjelame siin ArrayList
tüüpi loendit.
ArrayList
ArrayList on dünaamiline massiv. Tüütab suuresti nagu massiiv (on sisemiselt realiseeritud massiiviga), kuid pikkus on dünaamiline. Ehk siis ArrayList'i loomise hetkel ei pea teadma, palju loendisse on vaja lisada. Loend suureneb ise vastavalt vajadusele.
Koodinäide:
<source lang="java">
ArrayList<Integer> numbrid = new ArrayList<Integer>();
numbrid.add(1);
numbrid.add(2);
System.out.println(numbrid.size()); // 2
numbrid.add(3);
numbrid.add(4);
// loend: 1, 2, 3, 4
System.out.println(numbrid.size()); // 4
System.out.println(numbrid.get(1)); // 2
numbrid.remove(1); // element indeksiga 1 eemaldatakse
// ülejäänud loendi elemendid liigutatakse ühe võrra ettepoole:
// loend: 1, 3, 4
numbrid.add(1, 2); // lisame elemendi "2" positsioonile 1
// kõik elemendid indeksiga 1 või suuremad nihutatakse ühe võrra edasi:
// loend: 1, 2, 3, 4
numbrid.set(1, 7); // asendame elemendi väärtuse positsioonil 1:
// loend: 1, 7, 3, 4
numbrid.clear(); // tühjendame
// numbrid 1..10
for (int i = 0; i < 10; i++) {
numbrid.add(i + 1);
}
// prindime välja
for (int i = 0; i < numbrid.size(); i++) {
System.out.println(numbrid.get(i));
}
</source>