Tablice

AUTOR: MAREK SOWA

Czasami zdarza się tak, że programista musi przechować w jednym miejscu wiele danych tego samego typu. Z prostego powodu. Mając je pod ręką, można łatwiej i szybciej wykonywać na nich operacje. W takich sytuacjach zwykłe zmienne mogą już nie wystarczać. Dlatego właśnie w Javie wymyślono tablice, czyli arrays. Na szczęście tablice to proste obiekty, które każdy młody programista przyswoi bez problemu. Tablice to obiekty o określonym wymiarze przechowujące określony typ danych. Elementy w tablicy posiadają swój index, czyli miejsce w którym się znajdują. Mówimy, że pierwszy element znajduje się pod zerowym indeksem, a drugi element pod pierwszym indeksem i tak dalej... Tak się dzieje, ponieważ w Javie odliczanie zaczynamy od zera, a nie od jedynki =]


O tablicach powinniśmy myśleć, jak o ciągach arytmetycznych w matematyce, łańcuchach albo szeregach. Sztandarowym przykładem użycia tablic mogą być dni tygodnia. Załóżmy, że chcemy przechowywać kolejne dni tygodnia w jednym miejscu. Zamiast deklarować siedem zmiennych, możemy utworzyć obiekt tablicy o nazwie "tydzień" i powrzucać do niego kolejne dni. Gdy będziemy chcieli wywołać na przykład wtorek, to poprosimy naszą tablicę o jej drugi element.

Największą chyba zaletą tablic to funkcja grupowania obiektów tego samego typu. Na takiej grupie obiektów możemy wykonać określoną instrukcję na każdym jej elemencie. 

 

Tablice jednowymiarowe

Podstawowym typem tablic jest tablica jednowymiarowa. Można ją porównać do ciągu tych samych obiektów. Wynika to z tego, że kolejne elementy są dodawane na końcu tego ciągu. Ogólny schemat tablicy wygląda tak:

 

TabliceJednowymiarowe

 

Natomiast konstrukcja w programie wygląda tak:

int[] intArray = new int[7];

 

Na powyższym przykładzie programista zadeklarował typ prosty int i jego nazwę intArray. Dzięki nawiasom kwadratowym wiemy, że będzie to tablica intów, a nie zmienna int. Aby utworzyć taką tablicę, musimy użyć słowa kluczowego new, ponieważ tablica to obiekt.
Wiemy teraz, że nasza tablica przechowuje typ danych int. Dodatkowo już podczas tworzenia tablicy musimy zadeklarować jej wielkość w nawiasie kwadratowym. Nasza - o nazwie intArray - ma wielkość siedem. Znaczy to, że od teraz możemy umieścić w niej aż siedem dowolnych intów.
Aby dodać elementy, musimy użyć konstrukcji:

int[] intArray = new int[7];
intArray[0] = 21;
intArray[1] = 13;
intArray[2] = 10;
intArray[3] = 7;
intArray[4] = 185;
intArray[5] = -56;
intArray[6] = 0;

 

W ten sposób zapełniliśmy naszą tablicę kolejnymi elementami. Elementy tablicy są traktowane jak zwykłe zmienne i można na nich wykonywać standardowe operacje:

int[] intArray = new int[7];
int newInt = intArray[0]; // 0
intArray[0] = 21;
newInt = intArray[0]; // 21
intArray[1] = 13;
intArray[2] = 10;
intArray[3] = 3+4; //7
intArray[4] = 185;
intArray[5] = -56;
intArray[6] = intArray[5] * 0; // -56*0 = 0
System.out.println(intArray[6]); // 0
intArray[6] = 1;
System.out.println(intArray[6]); // 1
System.out.println(intArray.length); // 7
System.out.println(intArray[7]); // java.lang.ArrayIndexOutOfBoundsException: 7

 

Jak widzimy na powyższym przykładzie, w nawiasie kwadratowym zapisujemy indeks naszej tablicy. To właśnie pod tym indeksem przetrzymujemy naszą zmienną odpowiedniego typu. Taką zmienną można poddawać na przykład operacji dodawania, lub przypisywać jej wartość innej zmiennej.


Aby odczytać wielkość tablicy, trzeba po jej nazwie użyć metody .length(). Metoda zwróci nam wielkość tablicy jako zwykłą liczbę typu int. Odwołując się do nieistniejącego indeksu, dostaniemy exception typu: java.lang.ArrayIndexOutOfBoundsException, który będzie prześladował długo młodych programistów =]

Wyobraźmy sobie, że przechowujemy w tablicy sto zmiennych, na których chcemy wykonać operacje mnożenia przez 10. Zamiast pisać instrukcję sto razy, wystarczy zrobić powtarzającą się instrukcje przez każdy kolejny element tablicy :

for (int i = 0; i < intArray.length; i++) {
    intArray[i]*=10;
}

 

Istnieje również sposób tworzenia tablicy, od razu deklarując argumenty:

int[] testArray = {2,9,7,6,3,0,5};

 Tablica testArray posiada długość '7' jej pierwszym elementem jest '2' a ostatnim liczba '5'.

Tablice wielowymiarowe

Ten typ tablic możemy zobrazować jako kilku rzędowe szeregi, jak na przykład rozkład siedzeń w kinie albo macierze z matematyki.

TabliceDwuwymiarowe

Aby zadeklarować taką tablicę, wystarczy dołożyć kolejny nawias kwadratowy:

int[][] matrix = new int[2][6];

 

Odwołujemy się do niej w standardowy sposób, wskazując kolejno indeks rzędu oraz indeks konkretnego miejsca:

int[][] matrix = new int[2][6];
matrix[0][2] = 25;

 

Największą wadą tablic jest fakt, że trzeba z góry zadeklarować ich wielkość. Gdy powiększy nam się ilość danych, to albo musimy utworzyć nową tablicę, albo użyć innych rozwiązań. I tu przechodzimy do kolekcji, które omówione są tutaj.