JavaRush /Blog Java /Random-PL /Tablice w Javie

Tablice w Javie

Opublikowano w grupie Random-PL
Wyobraź sobie komórki w magazynie. Każdy ma swój własny numer i każdy zawiera jakiś obiekt „Bagaż”. Albo karta win, w której wszystkie rodzaje win są ponumerowane i przy składaniu zamówienia wystarczy podać numer trunku. Lub lista uczniów w grupie, w której uczeń „Andreev” zostanie zapisany w pierwszej komórce, a „Jakowlew” w ostatniej komórce. Lub lista pasażerów samolotu, z których każdemu przydzielone jest miejsce o określonym numerze. W Javie do pracy z podobnymi strukturami, czyli dużą ilością jednorodnych danych, często wykorzystuje się tablice w Javie.

Co to jest tablica?

Tablica to struktura danych przechowująca elementy tego samego typu. Można go traktować jako zbiór ponumerowanych komórek, z których każda może zawierać pewne dane (jeden element danych na komórkę). Dostęp do konkretnej komórki odbywa się poprzez jej numer. Numer elementu w tablicy nazywany jest także indeksem . W przypadku Javy tablica jest jednorodna, czyli wszystkie jej komórki będą przechowywać elementy tego samego typu. Zatem tablica liczb całkowitych zawiera tylko liczby całkowite (na przykład typu int ), tablica ciągów zawiera tylko ciągi znaków, tablica elementów utworzonej przez nas klasy Dog będzie zawierać tylko obiekty Dog . Oznacza to, że w Javie nie możemy umieścić liczby całkowitej w pierwszej komórce tablicy, ciągu znaków w drugiej i „doga” w trzeciej. Tablice w Javie

Deklaracja tablicy

Jak zadeklarować tablicę?

Jak każda zmienna, tablica w Javie musi zostać zadeklarowana. Można to zrobić na jeden z dwóch sposobów. Są one równoważne, ale pierwszy jest bardziej spójny ze stylem Java. Drugim jest dziedzictwo języka C (wielu programistów C przeszło na Javę i dla ich wygody pozostawiono alternatywną metodę). Tabela pokazuje oba sposoby deklarowania tablicy w Javie:
NIE. Deklaracja tablicy, składnia Java Przykłady Komentarz
1.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
Wskazane jest zadeklarowanie tablicy w ten sposób, jest to styl Java
2.
dataType arrayName[];
int myArray[];

Object
arrayOfObjects[];
Dziedziczony sposób deklarowania tablic z C/C++, który działa również w Javie
W obu przypadkach dataType jest typem zmiennych w tablicy. W przykładach zadeklarowaliśmy dwie tablice. Jedna będzie przechowywać liczby całkowite typu int , druga będzie przechowywać obiekty typu Object . Zatem zadeklarowana tablica ma nazwę i typ (typ zmiennych tablicowych). arrayName to nazwa tablicy.

Tworzenie tablicy

Jak stworzyć tablicę?

Jak każdy inny obiekt, można utworzyć tablicę Java, czyli zarezerwować dla niej miejsce w pamięci, korzystając z operatora new . Odbywa się to w następujący sposób:
new typeOfArray [length];
Gdzie typeOfArray to typ tablicy, a długość to jej długość (czyli liczba komórek) wyrażona w liczbach całkowitych ( int ). Jednak tutaj przydzieliliśmy tylko pamięć dla tablicy, ale nie powiązaliśmy utworzonej tablicy z żadną wcześniej zadeklarowaną zmienną. Zazwyczaj tablica jest najpierw deklarowana, a następnie tworzona, na przykład:
int[] myArray; // deklaracja tablicy
myArray = new int[10]; // utworzenie, czyli przydział pamięci dla tablicy 10 elementów typu int
Tutaj zadeklarowaliśmy tablicę liczb całkowitych o nazwie myArray , a następnie zadeklarowaliśmy, że składa się ona z 10 komórek (z których każda będzie przechowywać liczbę całkowitą). Jednak znacznie częściej tworzy się tablicę bezpośrednio po deklaracji, używając tej skróconej składni:
int[] myArray = new int[10]; // deklaracja i przydział pamięci "w jednej butelce"
Notatka:Po utworzeniu tablicy za pomocą new jej komórki są wypełniane wartościami domyślnymi. Dla typów numerycznych (jak w naszym przykładzie) będzie to 0, dla boolean - false , dla typów referencyjnych - null . Zatem po operacji
int[] myArray = new int[10];
otrzymujemy tablicę dziesięciu liczb całkowitych i dopóki nie zmieni się to w trakcie programu, każda komórka zawiera 0.

Więcej informacji na temat tablic znajdziesz w artykule „ Coś o tablicach

Długość tablicy w Javie

Jak powiedzieliśmy powyżej, długość tablicy to liczba elementów, dla których tablica jest zaprojektowana. Długości tablicy nie można zmienić po jej utworzeniu. Notatka:W Javie elementy tablicy numerowane są od zera. Oznacza to, że jeśli mamy tablicę składającą się z 10 elementów, to pierwszy element tablicy będzie miał indeks 0, a ostatni będzie miał indeks 9. Tablice w Javie - 3Dostęp do długości tablicy można uzyskać za pomocą zmiennej długości . Przykład:
int[] myArray = new int[10]; // utworzono tablicę liczb całkowitych z 10 elementami i nazwano ją myArray
System.out.println(myArray.length); // wypisuje na konsolę długość tablicy, czyli liczbę elementów, które możemy umieścić w tablicy
Dane wyjściowe programu:
10

Inicjowanie tablicy i uzyskiwanie dostępu do jej elementów

Sposób tworzenia tablicy w Javie jest już jasny. Po tej procedurze nie otrzymamy pustej tablicy, lecz tablicę wypełnioną wartościami domyślnymi. Przykładowo w przypadku int będzie to wartość 0, a jeśli mamy tablicę z danymi typu referencyjnego, to domyślnie w każdej komórce zapisana jest wartość null . Dostęp do elementu tablicy (czyli zapisujemy do niego wartość, wyświetlamy na ekranie lub wykonujemy na nim jakąś operację) uzyskujemy poprzez jego indeks. Inicjowanie tablicy polega na wypełnieniu jej określonymi danymi (domyślnie nie). Przykład: utwórzmy tablicę zawierającą 4 pory roku i wypełnijmy ją wartościami łańcuchowymi – nazwami tych pór roku.
String[] seasons  = new String[4]; /* zadeklarowano i utworzono tablicę. Java przydzieliła pamięć dla tablicy 4 łańcuchów, a teraz każda komórka ma wartość NULL (ponieważ łańcuch jest typem referencyjnym)*/

seasons[0] = "Winter"; /* w pierwszej komórce, czyli w komórce z liczbą zerową, wpisaliśmy napis Zima. Tutaj uzyskujemy dostęp do elementu zerowego tablicy i wpisujemy tam konkretną wartość */
seasons[1] = "Spring"; // wykonaj tę samą procedurę z komórką numer 1 (druga)
seasons[2] = "Summer"; // ...numer 2
seasons[3] = "Autumn"; // i z ostatnim numerem 3
Teraz wszystkie cztery komórki naszej tablicy zawierają nazwy pór roku. Inicjalizacja może być również przeprowadzona inaczej, łącząc inicjalizację i deklarację:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Ponadto nowy operator można pominąć:
String[] seasons  = {"Winter", "Spring", "Summer", "Autumn"};

Jak wyświetlić tablicę w Javie na ekranie?

Możesz wyświetlić elementy tablicy na ekranie (czyli na konsoli), na przykład, używając pętli for . Inny, krótszy sposób wyświetlania tablicy na ekranie omówimy w akapicie „Przydatne metody pracy z tablicami” poniżej.Na razie spójrzmy na przykład z cyklicznym wyjściem tablicy:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
W rezultacie program wyświetli następujący wynik:
Zima wiosna lato Jesień

Jednowymiarowe i wielowymiarowe tablice Java

Co jeśli chcemy utworzyć nie tablicę liczb, tablicę ciągów znaków lub tablicę niektórych obiektów, ale tablicę tablic? Java pozwala na to. Znana już tablica int[] myArray = new int[8] to tak zwana tablica jednowymiarowa. A tablica tablic nazywana jest dwuwymiarową. Przypomina to tabelę zawierającą numer wiersza i numer kolumny. Lub, jeśli nauczyłeś się początków algebry liniowej, na macierzy. Tablice w Javie - 4Dlaczego takie tablice są potrzebne? W szczególności do programowania tych samych macierzy i tabel, a także obiektów przypominających je strukturą. Na przykład pole gry w szachy można określić jako tablicę 8x8. Tablicę wielowymiarową deklaruje się i tworzy w następujący sposób:
int[][] myTwoDimentionalArray = new int [8][8];
W tej tablicy znajdują się dokładnie 64 elementy: myTwoDimentionalArray[0][0], myTwoDimentionalArray[0][1], i tak dalej myTwoDimentionalArray[1][0], myTwoDimentionalArray[1][1]aż do myTwoDimentionalArray[7][7]. Jeśli więc użyjemy go do przedstawienia szachownicy, wówczas komórka A1 będzie reprezentować myTwoDimentionalArray[0][0], a E2 będzie reprezentować myTwoDimentionalArray[4][1]. Gdzie jest dwóch, tam jest trzech. W Javie możesz określić tablicę tablic... tablicę tablic tablic i tak dalej. To prawda, że ​​​​tablice trójwymiarowe i więcej są używane bardzo rzadko. Natomiast wykorzystując tablicę trójwymiarową można zaprogramować np. kostkę Rubika.

Co jeszcze przeczytać

Tablice wielowymiarowe

Przydatne metody pracy z tablicami

Do pracy z tablicami w Javie służy klasa java.util.Arrays (tablice w języku angielskim oznaczają „tablice”). Generalnie na tablicach najczęściej wykonywane są następujące operacje: wypełnianie elementami (inicjalizacja), pobieranie elementu (po numerze), sortowanie i wyszukiwanie. Wyszukiwanie i sortowanie tablic to osobny temat. Z jednej strony bardzo przydatne jest samodzielne przećwiczenie i napisanie kilku algorytmów wyszukiwania i sortowania. Z drugiej strony wszystkie najlepsze praktyki zostały już napisane i zawarte w bibliotekach Java i można je legalnie stosować. Oto trzy przydatne metody tej klasy

Sortuj tablicę

Metoda void sort(int[] myArray, int fromIndex, int toIndex)sortuje tablicę liczb całkowitych lub jej podtablicę w kolejności rosnącej.

Wyszukiwanie tablicy w poszukiwaniu żądanego elementu

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key). Ta metoda szuka kluczowego elementu w już posortowanej tablicy myArray lub podtablicy, zaczynając od fromIndex i kończąc na toIndex . Jeżeli element zostanie znaleziony metoda zwraca jego indeks, jeżeli nie - (-fromIndex)-1.

Konwersja tablicy na ciąg

Metoda String toString(int[] myArray)konwertuje tablicę na ciąg znaków. Rzecz w tym, że w Javie tablice nie przesłaniają toString() . Oznacza to, że jeśli spróbujesz wyświetlić całą tablicę (a nie element po elemencie, jak w „ Wydrukowaniu tablicy na ekran ”) bezpośrednio na ekranie ( System.out.println(myArray)), otrzymasz nazwę klasy i szesnastkowy kod skrótu tablicy (jest to zdefiniowane przez Object.toString() ). Jeśli jesteś początkujący, możesz nie zrozumieć wyjaśnienia metody toString. Na pierwszym etapie nie jest to konieczne, ale dzięki tej metodzie wyjście tablicy jest uproszczone. Java ułatwia wyświetlanie tablicy bez użycia pętli. Więcej na ten temat w poniższym przykładzie.

Przykład sortowania, binarySearch i toString

Stwórzmy tablicę liczb całkowitych, wyświetlmy ją na ekranie za pomocą toString , posortujmy metodą sort i znajdźmy w niej jakąś liczbę.
class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; //deklaracja i inicjalizacja tablicy
        System.out.println(array);//próbując wyświetlić naszą tablicę na ekranie bez metody toString - otrzymujemy liczbę szesnastkową
        System.out.println(Arrays.toString(array));//печатаем массив "правильно"
        Arrays.sort(array, 0, 4); // posortuj całą tablicę od zera do czwartego członka
        System.out.println(Arrays.toString(array));//wyświetl posortowaną tablicę na ekranie
        int key = Arrays.binarySearch(array, 5); // ищем key - число 5 в отсортированном массиве.
        //binarySearch metoda zwróci indeks posortowanego elementu tablicy, w którym wymagana liczba jest „ukryta”
        System.out.println(key);//распечатываем индекс искомого числа
System.out.println(Arrays.binarySearch(array, 0));//а теперь попробуем найти число, которого в массиве нет,
        // i natychmiast wyświetl wynik na ekranie

    }
}
Dane wyjściowe programu:
[I@1540e19d [1, 5, 4, 3, 7] [1, 3, 4, 5, 7] 3 -1
Pierwsza linia to próba wyświetlenia tablicy bez toString , druga to wyświetlenie tablicy za pomocą toString , trzecia to posortowana tablica, czwarta to indeks żądanej liczby 5 w posortowanej tablicy (pamiętaj, że liczymy od zero, więc czwarty element tablicy ma indeks 3). W piątej linii widzimy wartość -1 . Tablica nie ma takiego indeksu. Sygnał wyjściowy sygnalizuje, że żądanego elementu (w tym przypadku 0) nie ma w tablicy.

Więcej o metodach klasy Array

Klasa Arrays i jej zastosowanie - w artykule opisano niektóre metody klasy Array

Najważniejsze dotyczące tablic

  • Główne cechy tablicy: rodzaj umieszczanych w niej danych, nazwa i długość.
    O tym ostatnim decyduje się podczas inicjalizacji (przydzielenia pamięci dla tablicy), dwa pierwsze parametry określane są podczas deklaracji tablicy.

  • Rozmiar tablicy (liczba komórek) musi być zdefiniowany w int

  • Nie można zmienić długości tablicy po jej utworzeniu.

  • Dostęp do elementu tablicy można uzyskać poprzez jego indeks.

  • W tablicach, podobnie jak gdzie indziej w Javie, elementy są numerowane od zera.

  • Po zakończeniu procedury tworzenia tablicy zostaje ona wypełniona wartościami domyślnymi.

  • Tablice w Javie mają inną strukturę niż w C++. Są prawie takie same jak wskaźniki do tablic dynamicznych.

Przydatne materiały o tablicach

Chcesz wiedzieć więcej o tablicach? Zapraszamy do zapoznania się z poniższymi artykułami. Istnieje wiele ciekawych i przydatnych informacji na ten temat.
  1. Coś o tablicach - Dobry szczegółowy artykuł na temat tablic

  2. Klasa Arrays i jej zastosowanie - w artykule opisano niektóre metody klasy Array

  3. Tablice wielowymiarowe - szczegółowy artykuł o tablicach wielowymiarowych z przykładami.

  4. Zwróć tablicę o zerowej długości, a nie null — autor efektywnego programowania, Joshua Bloch, mówi o tym, jak lepiej zwracać puste tablice

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION