W ramach powtórki poniżej przedstawiam wam listę kolekcji i interfejsów oraz wyjaśnię jak działa proces iteracji po elementach Set i Map, które nia maja określonego porzadku tak jak Listy.
Kolekcje w Javie to specjalne struktury danych, które ułatwiają przechowywanie i operowanie na wielu obiektach jednocześnie. Zanim omówimy konkretne typy kolekcji, warto zrozumieć, dlaczego używamy kolekcji:
Pozwalają na przechowywanie danych dynamicznie (bez stałych rozmiarów).
Ułatwiają wyszukiwanie, sortowanie i filtrowanie elementów.
Dają zestaw metod do manipulowania zawartością (dodawanie, usuwanie, iterowanie).
Eliminują potrzebę ręcznego zarządzania tablicami i ich rozmiarem.
Każda kolekcja implementuje odpowiedni interfejs, który definiuje, jakie operacje można na niej wykonywać.
| Interfejs | Klasa/implementacja | Opis |
|---|---|---|
| List | ArrayList | List |
| LinkedList | List | |
| Wektor | Wektor | |
| Stos | Stos | |
| Set | HashSet | Set |
| TreeSet | Set | |
| SortedSet | Sortowany set | |
| Map | HashMap | Map/słownik |
| TreeMap | Map/słownik | |
| SortedMap | Sortowany słownik | |
| Hashtable | Hash-table (pl. tablica mieszająca) |
Zapraszam do lektury
Set i Map nie mają określonego porządku tak jak Listy, więc nie można użyć indeksu, aby wyświetlić ich elementy.
Do pracy z elementami Set i Map zostały utworzone specjalne obiekty nazwane iteratorami.
Set<String> set = new HashSet<String>();
set.add("Deszczyk");
set.add("w");
set.add("Hiszpanii");
// Deklaruje iterator dla setu
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) // Sprawdza istnienie kolejnego elementu
{
// Sprawdza bieżący element i przechodzi do następnego
String tekst = iterator.next();
System.out.println(tekst);
}
List<String> lista = new ArrayList<String>();
lista.add("Deszczyk");
lista.add("w");
lista.add("Hiszpanii");
Iterator<String> iterator = lista.iterator();// // Deklaruje iterator dla listy
while (iterator.hasNext()) // Sprawdza istnienie kolejnego elementu
{
// Sprawdza bieżący element i przechodzi do następnego
String tekst = iterator.next();
System.out.println(tekst);
}
Map<String, String> mapa = new HashMap<String, String>();
mapa.put("pierwszy", "deszczyk");
mapa.put("drugi", "w");
mapa.put("trzeci", "Hiszpanii");
Iterator<Map.Entry<String, String>> iterator = mapa.entrySet().iterator();
while (iterator.hasNext())
{
// Sprawdza parę klucz-wartość
Map.Entry<String, String> para = iterator.next();
String klucz = para.getKey(); // Klucz
String wartosc = para.getValue(); // Wartość
System.out.println(klucz + ":" + wartosc);
}
Jak widzisz w kilku przykładach powyżej musimy wywołać metodę iterator() na kolekcji, by pobrać obiekt iterator. Następnie sprawdzamy wszystkie elementy po kolei tak długo, aż do ostatniego elementu. Pobieramy kolejny element w kolekcji za pomocą wywołanie next() i następnie sprawdzamy czy jest jeszcze jakiś element w kolekcji za pomocą hasHext() na iteratorze.
Na szczęście java posiada również pętle for-each do pracy z kolekcjami. Domyślnie używa ona iteratora, którym nie musimy się już zajmować.
Set<String> set = new HashSet<String>();
set.add("Deszczyk");
set.add("w");
set.add("Hiszpanii");
for (String tekst : set)
{
System.out.println(tekst);
}
Map<String, String> mapa = new HashMap<String, String>();
mapa.put("pierwszy", "deszczyk");
mapa.put("drugi", "w");
mapa.put("trzeci", "Hiszpanii");
for (Map.Entry<String, String> para : mapa.entrySet())
{
String klucz = para.getKey(); // Klucz
String wartosc = para.getValue(); // Wartość
System.out.println(klucz + ":" + wartosc);
}
mapa
Programując w Java nie zwalniasz pamięci ręcznie. Nie wywołujesz free(), nie martwisz się o wskaźniki. A jednak aplikacja działa stabilnie, obiekty znikają, a pamięć się nie „zapcha”.
Za kulisami pracuje …
Na pierwszy rzut oka obiekt w Javie wydaje się czymś prostym: tworzysz go, używasz i… zapominasz. W praktyce jednak każdy obiekt przechodzi kilka wyraźnych etapów, a ich zrozumienie pomogło mi …
W Javie obiekty nie pojawiają się znikąd. Zanim zaczną „żyć” w pamięci programu, muszą zostać poprawnie zainicjalizowane. Właśnie w tym momencie do gry wchodzą konstruktory – specjalne metody odpowiedzialne …
Porównywanie napisów w Javie to jeden z tych tematów, które na pierwszy rzut oka wydają się banalne. W praktyce jednak bardzo często prowadzą do nieoczekiwanych wyników i trudnych do znalezienia …
Komentarze (0)
Nie dodano jeszcze żadnych komentarzy
Dodaj nowy komentarz: