Nauka programowania Java #7: tablice i pętle

Tablice i pętle

Tablica jest kolejną, obok obiektów, strukturą referencyjną. Jej postawowe cechy to przechowywanie z góry określonej liczby wartości, przy czym wartością mogą zarówną zmienne referencyjne jak i proste (int, float, itp.).

Deklaracja tablicy liczb całkowitych:

int [] myIntegers;

 

Inicjalizacja powyższej tablicy pustymi wartościami:

myIntegers = new int [10];

 

Sprawdzenie wartości elementu zachodzi poprzez wskazanie na konkretną komórkę w tablicy. Tablice w Javie (i w większości języków programowania) iteruje się od 0. Jeśli chciałbym sprawdzić co kryje się w tablicy pod indexem 0 muszę użyć mojej zmiennej i w kwadratowych nawiasach oznaczych, który element mnie interesuje. Np:

System.out.println(myIntegers[0]);

 

Tablica z pustymi wartościami jest średnio przydatna, więc podmienie domyślną wartość pierwszego elementu.

myIntegers[0] = 5;

System.out.println(myIntegers[0]);

 

W ten sposób mogę nadpisać każdy element tablicy w dowolnej kolejności oraz nieskończoną ilość razy.

Teraz stworzę nową tablicę z od razu zainicjalizowanymi danymi:

float [] myFloat = {1.0f, 2.0f, 3.0f};

 

Tablice mogą też zawierać obiekty.

Integer firstInteger = 1;

Integer secondInteger = 2;

Integer [] array = {firstInteger, secondInteger};

 

Mogę tablice zagnieżdżić w innej tablicy tworzac wielowymiarowe struktury (np. macierze):

int [][] matrix = {{2 , 3 , 0}, {4, 5, 0}, {0, 7, 8}};

 

Niestety wprowadzanie ręczne za każdym razem tysiąca wartości do tablic jest czasochłonne, dlatego zautomatuję sobie pracę poprze użycie pętli for. Pętla ta służy do iterowania, czyli do przechodzenia przez każdy element jakiejś struktury danych (np. tablicy). Pętal składa się z trzech części, deklaracji i inicjalizacji indexu po którym iterujemy (w tym przypadku i), warunku wyjścia (np. i< n) oraz warunek zmienności pętli po zakończeniu każdego cyklu (tutaj jest to ‘100’).

int [] iteratateFor = new int [100];

int n = iteratateFor.length;

for(int i = 0; i < n; i++) {

     iterateFor[i] = I+1;
     System.out.println(iteratateFor[i]);

}

 

 

Są jeszcze inne pętle, jak while lub dowhile, ale na razie nie będą one Tobie potrzebne.

Wróćmy znów do tablic. W Javie została zaimplementowana klasa pomocniczna o nazwie Arrays, która można wykorzystać do pracy przy tablicach. Posiada ona kilka bardzo przydatnych metod, prześledźmy je:

  • Metoda sortująca dane:
int [] randomNumber = {1, 5, 3, 2, 4};
Arrays.sort(randomNumber);

for(int i = 0; i < randomNumber.length; i++) {
     System.out.println(randomNumber[i]);
}

 

 

  • Metoda copied, kopiuje tablice. Nalezy podać w drugim argumencie jak wiele elementów ma być skopiowanych.
int[] arrayCopied = Arrays.copyOf(randomNumber, 3);
for(int i = 0; i < arrayCopied.length; i++) {

     System.out.println(arrayCopied[i]);
}

 

 

Można też użyć funkcji copiedFromRange, aby skopiować tylko częśc tablicy, wskazując między  którymi indeksami przedział Cię interesuje.

int [] partOfArray = Arrays.copyOfRange(randomNumber, 0, 2);

for(int i = 0; i < partOfArray.length; i++) {
     System.out.println(partOfArray[i]);
}

 

 

  • Metoda fill wypełnia nowolną tablicę, takimi samymi wartościami, których  wartość wypisana jest jako drugi argument}
int [] emptyArray = new int [3];

                               

Arrays.fill(emptyArray, 9);

for(int i = 0; i < emptyArray.length; i++) {
     System.out.println(emptyArray[i]);
}

 

 

  • Ostatnia przydatna metoda to binarySearch, która to wyświetla index szukanego elementu w tablicy. Niestety funkcja ta działa jedynie na posortowanych tablicach (czyli właściwie jest bezużyteczna 😉 ).

 

Arrays.sort(randomNumbers);

for (int i = 0; i < randomNumbers.length; i++) {
     int binarySearch = Arrays.binarySearch(randomNumbers, i+1);
     System.out.println(binarySearch);
}

 

Dodaj komentarz