Autor: 02.11.2022
Java - wprowadzenie do kolekcji
Kolekcje to gotowe do użycia struktury danych. Są one częścią tzw. biblioteki standardowej. W praktyce kolekcje pozwalają łatwo zaimplementować różne popularne struktury: kolejkę, listę, stos itp.
Najważniejsza zaleta kolekcji Java to sam fakt, że możesz ich w dowolnym momencie użyć. Zamiast pisać kod od zera, po prostu importujesz potrzebną część biblioteki. Spójrzmy więc teraz na kilka podstawowych przykładów wbudowanych kolekcji języka Java.
Ważna rzecz - import
Zanim zaczniemy korzystać z kolekcji, najpierw musimy je zaimportować. Operacja importu jest bardzo prosta:
import java.util.ArrayList;
import java.util.List;
W powyższym fragmencie kodu importujemy klasę ArrayList oraz interfejs List z pakietu java.util. Od teraz możemy z powyższych elementów korzystać w naszym kodzie. Opcjonalnie możesz zaimportować całą zawartość pakietu util:
import java.util.*;
Wystarczy użyć gwiazdki.
Przykład - ArrayList
Kolekcja ArrayList to struktura znana potocznie jako Lista. Jest swego rodzaju rozwinięciem standardowych tablic dostępnych w Java. Popatrz na kod:
import java.util.*;
public class Main {
public static void main(String[] args) {
List countries = new ArrayList<>();
countries.add("Belgium");
countries.add("Norway");
countries.add("Poland");
System.out.println(countries.get(0));
}
}
Najpierw tworzymy nowy obiekt listy: List
Ostatni element przykładu to metoda get(), która pobiera element o wskazanym numerze indeksu. Działa to tak samo jak w przypadku standardowych tablic. Plusem tej kolekcji jest to, że jej rozmiar zmienia się dynamicznie i nie trzeba go z góry deklarować. Po prostu rozmiar będzie się automatycznie dopasowywał do ilości elementów.
Przykład - Stack
Stack to struktura znana jako Stos. Cechą charakterystyczną takiego stosu jest to, że mamy dostęp wyłącznie do elementu na samej górze. Jeśli potrzebny nam jest element znajdujący się niżej to najpierw musimy “zdjąć” elementy z góry. Inaczej mówiąc: element dodany jako ostatni, będzie elementem który ze stosu zejdzie jako pierwszy.
Popatrz na przykładowy kod:
import java.util.*;
public class Main {
public static void main(String[] args) {
Stack stack = new Stack<>();
stack.push("-1-");
stack.push("-2-");
stack.push("-3-");
System.out.println(stack);
stack.pop();
System.out.println(stack);
}
}
Tworzymy najpierw nowy obiekt klasy Stack. Zauważ, że będzie on przyjmował dane typu string. Następnie dodajemy kilka elementów za pomocą metody push().
Jeśli kod uruchomimy to uzyskamy następujący wynik:
[-1-,-2-,-3-]
[-1-,-2-]
Wyprowadzamy stos do konsoli - widać, że zawiera on trzy elementy. Potem za pomocą metody pop() usuwamy element na górze stosu. Wyraźnie widać kluczową zasadę działania stosu - element dodany jako ostatni jest usuwany jako pierwszy. Usuwać elementy możemy wyłącznie od góry stosu.
Przykład - PriorityQueue
Kolekcja PriorityQueue to popularna kolejka. Zasadę działania zna każdy - im wcześniej staniesz w kolejce tym szybciej załatwisz swoje sprawy. Albo inaczej: im większy masz priorytet tym szybciej zostaniesz obsłużony.
Od razu przejdźmy od kodu:
import java.util.*;
public class Main {
public static void main(String[] args) {
PriorityQueue queue = new PriorityQueue<>();
queue.offer(1);
queue.offer(100);
queue.offer(200);
queue.offer(2);
System.out.println(queue);
while(!queue.isEmpty()) {
System.out.println("Result: " + queue.poll());
}
}
}
Jak zwykle zaczynamy od utworzenia nowej instalacji. Tym razem jest to obiekt klasy PriorityQueue - nasza kolejka będzie przechowywać dane typu integer.
Za pomocą metody offer() dodajemy nowe elementy. Następnie wyprowadzamy całą kolejkę do konsoli.
Kolejny krok to opróżnianie kolejki za pomocą pętli. Wyprowadzamy kolejne elementy do momentu, w którym kolejka zostanie opróżniona. Zwróć uwagę na wynik:
[1, 2, 200, 100]
Result: 1
Result: 2
Result: 100
Result: 200
Elementy są wyprowadzane zgodnie z ich priorytetem. Największy priorytet ma wartość 1. A najmniejszy ma wartość 200. Czyli elementy są wyprowadzane od 1 do 200.
Podsumowanie
Te trzy przykłady, które pokazaliśmy w artykule to dopiero początek. Wbudowane kolekcje Java oferują znacznie więcej możliwości. Każdy programista Java powinien poznać ten temat, przynajmniej w podstawowym stopniu. To wiedza, która przyda ci się na każdym kroku.
Chcesz dowiedzieć się więcej na temat kolekcji? Zapraszamy na kurs Java - Kolekcje. Znajdziesz w nim aż kilkanaście różnych struktur, które bardzo ci pomogą w codziennej pracy z kodem Java. W trakcie kursu rozwiążesz dziesiątki zadań i praktycznych ćwiczeń - dzięki nim zdobędziesz realne, przydatne umiejętności pracy z kolekcjami.