Kolekcje w Javie

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