Klasa Arrays, to jeden z tych „kombajnów”, po który sięgamy gdy chcemy zrobić „coś” z naszą tablicą.
Przykładowo – chcesz zrobić „coś” z tablicą, ale nie wiesz nawet jak to nazwać 🙃, a tym bardziej, jak to znaleźć? To zacznij poszukiwania właśnie od tej klasy pomocniczej – jest duża szansa, że znajdziesz to czego akurat teraz potrzebujesz! 🚀
Spis treści
Java – Arrays – wprowadzenie
Z tego materiału dowiesz się:
- Jakie są podstawowe funkcjonalności klasy pomocniczej Arrays?
- Jak wykorzystać klasę Arrays w codziennej pracy?
- Jakie algorytmy sortowania kryją się pod Arrays.sort()?
Java – Arrays – podstawowe funkcjonalności
Skupimy się na podstawowych funkcjonalnościach klasy Arrays.
Za przykład posłuży nam prosta tablica liczb całkowitych.
int[] numbers = {4, 8, 5, 99, 34};
➡ ZOBACZ 👉: Typy proste | Kurs Java
Przyda nam się również dwuwymiarowa tablica Stringów.
➡ ZOBACZ 👉: String – najważniejszy typ danych
String[][] cities = {{"Warszawa", "Gdansk"}, {"Poznan", "Lodz", "Krakow"}};
➡ ZOBACZ 👉: Java tablice | Kurs Java
Wyświetlanie Tablicy
Żeby wyświetlić tablicę, możemy przeiterować się po tablicy za pomocą pętli for.
➡ ZOBACZ 👉: Iteracja, iteracje – powtarzanie w programowaniu vs Rekurencja ➿, Iteracja, iteracje
Jednak nie musimy robić tego ręcznie!
Alternatywnie możemy skorzystać z gotowych już metod toString() oraz deepToString().
System.out.println(Arrays.toString(numbers)); System.out.println("cities = " + Arrays.deepToString(cities));
➡ ZOBACZ 👉: Pętla (for, while, do while, foreach) pętle | Kurs Java
➡ ZOBACZ 👉: Java tablice | Kurs Java
Kopiowanie Tablicy
Jeżeli potrzebujesz stworzyć kopię tablicy, biblioteka Arrays również Ci w tym pomoże.
int[] copyNumbers = Arrays.copyOf(numbers, numbers.length);
Porównywanie Tablic
Czasem konieczne jest porównanie dwóch tablic.
boolean isEqual = Arrays.equals(numbers, copyNumbers);
Zwróć uwagę, że w tym wypadku porównujemy poszczególne elementy tablicy, nie sam obiekt tablicy (jak robi to operator ==).
➡ ZOBACZ 👉: Operatory relacyjne | Kurs Java
➡ ZOBACZ 👉: hashCode i equals – co grozi Ci za złamanie kontraktu między metodami equals i hashCode?
Wyszukiwanie Elementu
Potrzebujesz sprawdzić, czy dany element znajduje się w tablicy?
Musimy jednak pamiętać, że metoda binarySearch() oczekuje posortowanej tablicy.
Jeżeli jej wcześniej nie posortujesz, możesz spodziewać się błędnych wyników. 🙃
Arrays.sort(numbers); int index = Arrays.binarySearch(numbers, 8);
Wypełnianie Tablicy
Metoda fill() umożliwia jednoczesne wypełnienie wszystkich elementów tablicy określoną wartością.
To przydatne narzędzie, gdy chcemy zainicjować naszą tablicę.
int[] array = new int[5]; Arrays.fill(array, 33);
Arrays strumienie
Dzięki klasie Arrays możemy wywołać strumień (ang. stream) na tablicy.
Umożliwia nam to eleganckie przetwarzanie danych. Jest to szczególnie przydatne, gdy chcemy wykonywać bardziej złożone operacje na elementach tablicy.
Dla przykładu zsumujemy wszystkie elementy tablicy mniejsze od 10.
int sum = Arrays.stream(numbers).filter(value -> value < 10).sum();
Algorytmy Sortowania
Metoda Arrays.sort() w Javie używa różnych algorytmów sortowania w zależności od sytuacji.
Implementacja algorytmu sortowania zależy od typu danych i rozmiaru tablicy. Oto kilka informacji na ten temat:
- Dla typów prostych: Dla tablic zawierających typy proste, takie jak int, long, char, float, itp., Arrays.sort() używa modyfikacji algorytmu Dual-Pivot Quicksort. Jest to ulepszona wersja tradycyjnego algorytmu Quicksort.
➡ ZOBACZ 👉: Sortowanie szybkie – Quick Sort
- Dla obiektów: Dla tablic obiektów, Arrays.sort() używa algorytmu TimSort. TimSort jest hybrydowym algorytmem sortowania, który łączy elementy MergeSort i InsertionSort. Jest efektywny w przypadku danych częściowo posortowanych lub małych danych.
➡ ZOBACZ 👉: Sortowanie przez Scalanie – Merge Sort
➡ ZOBACZ 👉: Sortowanie przez wstawianie, Insertion Sort - Dla dużych tablic obiektów: W przypadku dużych tablic obiektów, TimSort wykorzystuje metodę Comparable lub Comparator do porównywania elementów i ustalania ich kolejności.
Warto zauważyć, że implementacje mogą się różnić w zależności od wersji Javy i konkretnego dostawcy JVM.
Jednak w przypadku standardowej Javy (Oracle/OpenJDK), powyższe informacje są odpowiednie dla wersji Java 7 i nowszych do 21.
Generalnie rzecz biorąc, implementacja Arrays.sort() jest zoptymalizowana pod kątem różnych przypadków użycia, co sprawia, że jest elastyczna i wydajna.
Java – Arrays – podsumowanie
Klasa Arrays w Javie to doskonałe narzędzie do efektywnego zarządzania danymi w tablicach. Dzięki niej sortowanie, kopiowanie czy przeszukiwanie elementów staje się prostsze i bardziej wydajne, co pozwala programiście zoptymalizować operacje na danych. Nie zapomnij, że prawidłowe sortowanie danych jest kluczowe dla poprawnego działania funkcji wyszukiwania, a znajomość różnych algorytmów sortowania daje możliwość wyboru optymalnego rozwiązania dla konkretnej sytuacji. Warto także eksplorować funkcje strumieniowania (Arrays.stream()), aby elegancko manipulować danymi w tablicach, tworząc bardziej czytelny i wydajny kod.
➡ ZOBACZ 👉: Kurs Java | Darmowy Kurs Programowania w Javie
20+ BONUSOWYCH materiałów z programowania
e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!
[su_button url="/ebook/?r=1&utm_campaign=w_pt" target="blank" style="soft" size="8" center="yes" icon="icon: download" desc="e-book" title="Pobieram darmowy e-book"]Odbieram Dostęp Do E-Booków![/su_button]