Wstęp
Kolekcje w Javie służą do przechowywania elementów tego samego typu. Najczęściej dane pobrane z baz danych są właśnie dostarczane w formie kolekcji. Takie rozwiązanie pozwala na operowanie na dużej ilości danych oraz zapewnia do nich szybki dostęp. Kolekcje dzielimy na trzy rodzaje: listy(List), Zbiory(Set) i Mapy(Map).
Kolekcje w Javie – Lista(java.util.List)
Lista służy do przechowywania elementów zgodnie z kolejnością jej dodawania. Każdy dodawany element posiada swój liczbowy identyfikator. Na podstawie tego identyfikatora możemy pobierać elementy z listy.
List<String> list = new ArrayList<>(); list.add("Kasia"); List<String> list1 = new LinkedList<>(); list1.add("Jan"); List<String> list2 = Arrays.asList("Kasia","Jan","Krzyś");
Pierwszy sposób utworzenia listy jest wykorzystywany do list, z których istnieje potrzeba dużej ilości odczytu zawartości. Drugi zapis sprawdza się tam gdzie więcej jest modyfikacji listy. Zapis trzeci jest tak naprawdę skróconym zapisem pierwszym.
Teraz zajmiemy się pobieraniem danych z listy. Mamy do dyspozycji trzy sposoby:
System.out.println("for"); for (int i =0; i<list2.size(); i++) { System.out.println(list2.get(i)); } System.out.println("foreach"); for (String text: list2) { System.out.println(text); } System.out.println("lambda"); list2.forEach(text -> System.out.println(text));
Pierwszy wykorzystuje zwykłą pętle for jest to zarazem najstarszy sposób pobieranie elementów z listy. Kolejny sposób wykorzystuje konstrukcja foreach a ostatni jest najmłodszy wykorzystuje lambdę.
Kolekcje w Javie – Zbiór(java.util.Set)
Zbiór przechowuje elementy, które się nie powtarzają. W przeciwieństwie do listy zbór nie posiada metody get do pobrania element ze zbioru. Jednak można pobrać elementy ze zbioru przy wykorzystaniu lambdy i foreach. Dokładnie tak samo, jak w przypadku listy. Deklarujemy zbór w następujący sposób:
Set<String> name = new HashSet<>(); name.add("Kasia"); name.add("Jan"); name.add("Krzyś"); name.add("Kasia"); Set<String> name1 = new TreeSet<>(); name1.add("Kasia"); name1.add("Jan"); name1.add("Krzyś"); name1.add("Maks");
Pierwszy zapis to podstawowy zapis implementacji kolekcji Set. Przechowywane elementy nie mają określonej kolejności. W przypadku drugiego zapisu tworzony zbiór jest przechowywany w postaci posortowanej.
Kolekcje w Javie – Mapa
Mapa w odróżnieniu od pozostałych kolekcji przechowuje odwzorowanie klucz – wartość. Jeżeli wykorzystujemy mapę to musimy pamiętać że klucze nie mogą się powtarzać. Jeżeli drugi raz jako klucz wpiszemy tę samą wartość, wartość wcześniejsza zostanie nadpisana(utracona). Inaczej ma się sprawa z wartościami przypisane do różnych kluczy. Tutaj wartości mogą się powtarzać.
Map<String, String> name = new HashMap<>(); name.put("Kasia","Białystok"); name.put("Jan","Warszawa"); name.put("Krzyś","Łomża"); name.put("Kasia","Warszawa"); System.out.println("foreach"); for (String key: name.keySet()) { System.out.println("key: "+key+", value: "+name.get(key)); } System.out.println("lambda"); name.forEach((key, value) -> { System.out.println("key: "+key+", value: "+value) });
W pierwszym elemencie deklarujemy mapę i uzupełniamy ja o wartości wykorzystujące metodę put oraz podając do tej metody zestaw klucz i wartość. Zmienia się również sposób pobierania danych w przypadku mapy. Ponieważ przy pętlach foreach pobieramy najpierw listę kluczy. Dopiero na jej podstawie jesteśmy w stanie pobrać wartości. W przypadku lambda dostajemy od razu zestaw klucz wartość.
Teraz już wiemy jak działają kolekcje w Javie i jak można ich użyć na przykład do pobierania informacji z takich elementów. Podsumowując kolekcje są bardzo użytecznymi elementami w języku ponieważ pozwalają na szybki dostęp do danych.
Przeczytaj pozostałe artykuły z serii Java