Java kolekcje (ang. collections) – W Javie mamy do dyspozycji tablice. Mają one jednak trochę wad i nie zawsze łatwo współpracuję się z nimi. Dodawanie lub usuwanie elementów, może być udręką (szczególnie praca z indeksami) 😫. Jestem zdania, że tam, gdzie jest to możliwe, życie należy sobie ułatwiać/upraszczać. Tak jest i w tym przypadku. Java oferuję, można trochę powiedzieć tablicę na sterydach 💪, czyli kolekcje. Kolekcje takie jak np. listy to towarzysze, z którymi współpracuję się zdecydowanie bardziej przyjemnie – oferują one metody, które nie dość, że znacznie zmniejszają linie kodu/ilość linii kodu, to jeszcze sprawiają, że praca z nimi jest naprawdę przyjemna.
Java – Collection – wprowadzenie
Z tego materiału dowiesz się:
- Czym klasa Collection?
- Co jest lepsze ArrayList czy tablica?
- Jakie cechy ma Lista?
- Co charakteryzuje Set?
- Czym jest mapa?
Java Collection – Kolekcje w Javie
Kolekcja to pojedyncza jednostka np. lista, która reprezentuję grupę pojedynczych obiektów np. zwierząt 🐘🦧🦥. Zdecydowanie jest to spora analogia do tablic. Jest tak nie bez powodu, ponieważ pod prawie każdą kolekcją kryje się tak naprawdę tablica.
W Javie dla kolekcji został utworzony, osobny framework o nazwie „Collections Framework”, który mieści w sobie wszystkie klasy i interfejsy kolekcji.
Kolekcje mogą wykonywać różne operacje na grupie przechowywanych obiektów takie jak np. dodawanie, usuwanie, wyszukiwanie oraz sortowanie obiektów.
Java Collection – metody
Interfejs Collection posiada szereg metod, które możesz wykorzystywać w dowolnej kolekcji:
- add() – dodaje wskazany element do kolekcji
- addAll() – dodaje do kolekcji wszystkie elementy wskazanej przez nas kolekcji
- remove() – usuwa wskazany element z kolekcji
- removeAll() – usuwa z kolekcji wszystkie elementy wskazanej przez nas kolekcji
- size() – zwraca rozmiar kolekcji
- clear() – usuwa wszystkie elementy kolekcji
- iterator() – zwraca iterator dostępu do elementów kolekcji
//add ArrayListusers = new ArrayList<>(); users.add(new User("Tomek", "Woliński")); users.add(new User("Mateusz", "Laskowski")); ArrayList femaleUsers = new ArrayList<>(); femaleUsers.add(new User("Kasia","Kowalska")) femaleUsers.add(new User("Ania","Nowak")); ArrayList maleUsers = new ArrayList<>(); maleUsers.add(new User("Tomek", "Woliński")); maleUsers.add(new User("Mateusz", "Laskowski")); System.out.println(users); //addAll users.addAll(femaleUsers); System.out.println(users); //remove users.remove(new User("Kasia", "Kowalska")); System.out.println(users); //removeAll users.removeAll(maleUsers); System.out.println(users);
Java List| ArrayList| LinkedList
Lista (ang. list) to uporządkowana kolekcja, w której wartości mogą wystąpić więcej niż jeden raz. Najczęściej wykorzystywanymi typami list są:
- ArrayList,
- LinkedList.
ArrayListanimals = new ArrayList<>(); //add animals.add("Cat"); System.out.println(animals); //get String animal = animals.get(0); System.out.println(animal); //set animals.set(0,"Dog"); System.out.println(animals);
Java ArrayList vs. tablica (ang. array)
Lista lepsza od tablicy? Zdecydowanie przydałyby się dowody na tę tezę 😊 Spójrz jak wyglądałoby dodanie elementu na ostatniej pozycji w tablicy:
int numbers[] = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.toString(numbers));
int i;
int newArray[] = new int[numbers.length + 1];
for (i = 0; i < numbers.length; i++){
newArray[i] = numbers[i];
newArray[numbers.length] = 6;
}
numbers = newArray;
System.out.println(Arrays.toString(numbers));
Trochę linii jest, plus trzeba się chwilę nagłówkować, żeby w ogóle przekopiować jedną tablicę na drugą.
Co ma za to w swojej kontrofercie lista?
ListlistOfnumbers = new ArrayList<>(); listOfnumbers.add(3); listOfnumbers.forEach(System.out::println);
Kilka linijek kodu, wszystko jest czytelne już przy pierwszym spojrzeniu. Mam nadzieje, że to wystarczająco przekonało Cię do tego, żeby sięgnąć po listę.
Java ArrayList | LinkedList
W ramach tego materiału zajmiemy się przede wszystkim ogólnym zagadnieniem kolekcji (ang. collections) – natomiast kompletny materiał dotyczący list w tym ArrayList i LinkedList znajdziesz poniżej.
→ ZOBACZ 👉: Java List| ArrayList| LinkedList
Java Set| HashSet| TreeSet
Set jest nieuporządkowaną kolekcją obiektów. Co to właściwie znaczy? 🤔
- Elementy w secie nie mają określonej kolejności,
- Nie można wskazać pozycji, w której chcielibyśmy dodać element,
- Nie można uzyskać dostępu do elementów przez ich indeks.
⚠ W Secie nie można przechowywać zduplikowanych wartości, dotyczy to również wartości null⚠
Najczęściej wykorzystywanymi typami setów są:
- HashSet
- TreeSet 🌳 (przechowuje posortowane elementy)
Jedną z metod set'u jest iterator(), dzięki której możliwe jest iterowanie się po elementach set'u.
Co jeżeli chciałbyś użyć pętli?🤔➿
Jest to możliwe, ale wyłącznie z pętlą for each – zarówno tradycyjną jak i metodą forEach().
for (String animal : animals) {
System.out.println(animal);
}
animals.forEach(System.out::println);
→ ZOBACZ 👉: Pętla (for, while, do while, foreach) pętle | Kurs Java
W odróżnieniu od list Set nie posiada np. takich metod jak get() lub set(), ponieważ w secie nie można odnieść się do indeksu.
Java – ArrayList vs. HashSet
Do listy możesz dodać różne elementy lub nawet kilka takich samych – wszystko, co do niej dodasz (Oczywiście zgodnie z typem przyjmowanych parametrów przez listę), pojawi się w liście. Jak dodasz „Cat” na pierwszej pozycji, a „Mouse” na ostatniej to możesz mieć pewność, że znajdziesz te elementy pod odpowiednim indeksem.
ArrayListanimalsList = new ArrayList<>(); animalsList.add("Cat"); animalsList.add("Dog"); animalsList.add("Cat"); animalsList.add("Cat"); animalsList.add("Dog"); animalsList.add("Mouse"); System.out.println(animalsList.size()); //6 animalsList.forEach(System.out::println); //Cat, Dog, Cat, Cat, Dog, Mouse
Dodając do set'u elementy, nie ma znaczenia, ile będziesz próbował, dodać duplikatów to i tak tylko jeden dany element pojawi się w secie. Pamiętaj również, o tym, że ostatni dodany element w secie nie koniecznie musi pojawić się na końcu set'u – jest to nieuporządkowana kolekcja – nie mamy wpływu na pozycję danego elementu.
HashSetanimalsSet = new HashSet<>(); animalsSet.add("Cat"); animalsSet.add("Dog"); animalsSet.add("Cat"); animalsSet.add("Cat"); animalsSet.add("Dog"); animalsSet.add("Mouse"); System.out.println(animalsSet.size()); // 3 animalsSet.forEach(System.out::println); // Przykładowo (ponieważ kolejność nie jest z góry nam znana): Mouse, Cat, Dog
Java Collection – Interface Collection
Interfejs Collection jest głównym interfejsem frameworka kolekcji w Javie.

Java Map | HashMap
Mówiąc o kolekcjach, warto również wspomnieć o mapie. Należy ona również do „Collections Framework”. Nie dziedziczy ona po Collection jednak można powiedzieć, że towarzyszy kolekcjom krok w krok 😎.
Co warto wiedzieć o mapie ?
- Elementy mapy są przechowywane w parach klucz -> wartość,
- Klucze są unikalnymi wartościami związanymi z poszczególnymi wartościami,
- Mapa nie może zawierać zduplikowanych kluczy,
- Każdy klucz może być związany tylko z pojedynczą wartością.
Najczęściej korzysta się z HashMap'y.
Java HashMap – Metody
HashMapanimals = new HashMap<>(); //put - dodawanie elementów animals.put(1, "Cat"); animals.put(2, "Dog"); animals.put(3, "Mouse"); System.out.println(animals); //remove - usuwanie elementów po kluczu animals.remove(2); //get - dostęp do wartości po kluczu String animal = animals.get(1); System.out.println(animal); //keySet() - lista wszystkich kluczy Set keys = animals.keySet(); keys.forEach(System.out::println); //values - lista wszystkich wartośći Collection values = animals.values(); values.forEach(System.out::println); //entrySet - zwraca pary klucz -> wartość System.out.println(animals.entrySet());
Iterowanie po mapie jest możliwe w pętli for each. Jest trochę „złożone” niż iterowanie się np. po liście, ponieważ iterujemy się po parze obiektów.
for (Map.Entryentry : animals.entrySet()) { System.out.println("Klucz: " + entry.getKey() + " Wartość: " + entry.getValue());
Java – Collection – podsumowanie
W ramach tego materiału dowiedzieliśmy się, czym jest kolekcja i jakie typy kolekcji oferuję Java. Bliżej zapoznaliśmy się różnicami pomiędzy ArrayList'ą oraz tablicą, a także pomiędzy poszczególnymi typami kolekcji.
Jeżeli chcesz kontynuować swoją przygodę z Javą i poznać inne struktury, które oferuję ten język programowania – to zapraszam do zapoznania się z różnymi tematami z serii o Javie.
→ ZOBACZ 👉: Kurs Java | Darmowy Kurs Programowania w Javie
Kierunek Java
W serii o Javie zapoznajesz się z podstawowymi tematami o Javie. Jeżeli chcesz bardziej kompleksowo zagłębić się w temat Javy, poczytać, posłuchać o Javie, to zachęcam Cię do zapoznania się z moim kursem „Kierunek Java”:
→ ZOBACZ 👉: Kierunek Java

