Java podstawy #7: tablice oraz pętle for, while i do-while

Tablice

Tablica jest kolejną, obok obiektów, strukturą referencyjną. Jej podstawowe cechy to przechowywanie z góry określonej liczby wartości, przy czym wartością mogą zarówno 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 zaznaczyć, który element mnie interesuje. Np:

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

Tablica z pustymi wartościami jest średnio przydatna, więc podmienię 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ździć w innej tablicy, tworząc wielowymiarowe struktury (np. macierze):

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

Pętla for

Niestety wprowadzanie ręczne za każdym razem tysiąca wartości do tablic jest czasochłonne, dlatego zautomatyzuję 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ętla 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 [] iterateFor = new int [100];
int n = iterateFor.length;

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

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

}

Klasa Arrays

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 pomocnicza 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. Należy 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ęść 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 dowolną 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 😉 ).
int[] randomNumbers = {10,3,11,5,8,3,2};
Arrays.sort(randomNumbers); for (int i = 0; i < randomNumbers.length; i++) { int binarySearch = Arrays.binarySearch(randomNumbers, randomNumbers[i]); System.out.println(binarySearch); }

Link do lekcji: https://github.com/developeronthego/java-basics/tree/main/src/main/java/basics/lesson7

Może Ci się również spodoba

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *