A Java nyelvben a tömbök segítségével több azonos típusú értéket tárolhatsz egyetlen szerkezetben. Más adatszerkezetektől eltérően a tömb mérete a létrehozás után rögzített. Az elemeket index használatával rendelheted a tömbhöz, illetve kérdezhetsz le belőle. A Java tömbök nullától induló indexelést használnak: az első elem indexe 0, a másodiké 1, és így tovább.
Íme a tömb inicializálásának szokásos szintaxisa:
type[] variableName = new type[size];
A type a tömb elemeinek a típusa, ami lehet primitív típus (például int) vagy osztály (például String).
A size az elemek száma, amennyit ez a tömb tárolni fog (ez később nem változtatható meg).
A tömb létrehozása után az elemek az alapértelmezett értékükre inicializálódnak (jellemzően 0, false vagy null).
// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];
A tömböket egy rövidített jelöléssel is definiálhatod, amellyel egyszerre hozhatod létre a tömböt és állíthatod be az értékeit:
// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };
Mivel a fordító most már meg tudja állapítani, hogy hány eleme lesz a tömbnek, a hossz elhagyható.
A tömb elemeit szögletes zárójeles indexjelöléssel rendelheted hozzá és érheted el:
// Assign second element by index
twoInts[1] = 8;
// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];
Ha a tömb érvényes indexein kívül eső indexet érsz el, az IndexOutOfBoundsException kivételt eredményez.
A tömböket módosíthatod úgy, hogy egy tömbpéldány metódusait vagy tulajdonságait hívod meg, vagy úgy, hogy az Arrays osztályban definiált statikus metódusokat használod (ezeket jellemzően csak generikus kódban használják).
A length tulajdonság tartalmazza a tömb hosszát.
Így érheted el:
int arrayLength = someArray.length;
A Java emellett egy hasznos segédosztályt is biztosít, a java.util.Arrays osztályt, amely rengeteg hasznos, tömbökkel kapcsolatos metódust tartalmaz (például Arrays.equals).
A Java a többdimenziós tömböket is támogatja, például int[][] arr = new int[3][4];, amelyek nagyon hasznosak lehetnek.
Az, hogy a tömb egyben gyűjtemény is, azt jelenti, hogy az értékek index szerinti elérése mellett egy for-each ciklussal az összes értékén végig is iterálhatsz:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for(char vowel: vowels) {
// Output the vowel
System.out.print(vowel);
}
// => aeiou
Ha nagyobb kontrollt szeretnél afölött, hogy mely értékeken iterálj, használhatsz for ciklust:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for (int i = 0; i < 3; i++) {
// Output the vowel
System.out.print(vowels[i]);
}
// => aei
Szenvedélyes madárfigyelő vagy, aki nyomon követi, hány madár járt a kertedben az elmúlt hét napban.
Hat részfeladat vár rád, és mindegyik a kertedbe látogató madarak számával foglalkozik.
Az összehasonlítás kedvéért mindig magadnál tartod a múlt heti számok másolatát, amelyek ezek voltak: 0, 2, 5, 3, 7, 8 és 4. Valósítsd meg a BirdWatcher.getLastWeek() metódust, amely a múlt heti számokat adja vissza:
BirdWatcher.getLastWeek();
// => [0, 2, 5, 3, 7, 8, 4]
Valósítsd meg a BirdWatcher.getToday() metódust, amely visszaadja, hány madár járt ma a kertedben. A madárszámok napok szerint rendezettek: az első elem a legrégebbi nap száma, az utolsó pedig a mai napé.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getToday();
// => 1
Valósítsd meg a BirdWatcher.incrementTodaysCount() metódust, amely megnöveli a mai nap számát:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.incrementTodaysCount();
birdCount.getToday();
// => 2
Valósítsd meg a BirdWatcher.hasDayWithoutBirds() metódust, amely true értéket ad vissza, ha volt olyan nap, amikor egyetlen madár sem járt a kertben; egyébként false-t ad vissza:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.hasDayWithoutBirds();
// => true
Valósítsd meg a BirdWatcher.getCountForFirstDays() metódust, amely visszaadja, hány madár járt a kertedben a hét kezdete óta, de a számolást korlátozd a hét elejétől megadott számú napra.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getCountForFirstDays(4);
// => 14
Néhány nap zsúfoltabb, mint a többi. Forgalmas nap az, amikor öt vagy több madár járt a kertedben.
Valósítsd meg a BirdWatcher.getBusyDays() metódust, amely visszaadja a forgalmas napok számát:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Java nyelvet 26 fogalom158 feladat segítségével, valódi emberi mentorálással, mindez ingyen.