Przejdź do głównej treści
eLearner.app
Moduł 6 · Lekcja 1 z 211/14 w kursie~15 min
Lekcje modułu (1/2)

Set i Map

Oprócz klasy ArrayList (która reprezentuje uporządkowaną listę elementów), Java Collections Framework oferuje dwa inne fundamentalne interfejsy: Set (dla zbiorów unikalnych elementów) i Map (dla asocjacji klucz-wartość).

Set: Zbiory unikalnych elementów

Set (zbiór) to kolekcja, która nie może zawierać duplikatów elementów. Jej najczęstszą implementacją jest HashSet, oparta wewnętrznie na tabeli mieszającej (hash table), co gwarantuje doskonałą wydajność operacji wstawiania, usuwania i sprawdzania obecności.

Code
import java.util.HashSet;
import java.util.Set;

Set<String> uniqueNames = new HashSet<>();
uniqueNames.add("Alice");
uniqueNames.add("Bob");
uniqueNames.add("Alice"); // Questo inserimento verrà ignorato poiché "Alice" è già presente

System.out.println(uniqueNames.size()); // Stampa 2

Map: Asocjacje klucz-wartość

Struktura Map (mapa) odwzorowuje unikalne klucze na wartości. Nie może zawierać zduplikowanych kluczy: każdy klucz jest powiązany z maksymalnie jedną wartością. Jej standardową implementacją jest HashMap.

Code
import java.util.HashMap;
import java.util.Map;

Map<String, Integer> ageMap = new HashMap<>();
// Inserimento o aggiornamento di coppie
ageMap.put("Alice", 25);
ageMap.put("Bob", 30);

// Recupero del valore tramite la chiave
int aliceAge = ageMap.get("Alice"); // Ritorna 25

// Verifica della presenza di una chiave o valore
boolean hasBob = ageMap.containsKey("Bob"); // Ritorna true

Iterowanie po mapie

Aby iterować po parach klucz-wartość, możemy użyć pętli for-each na zbiorze wpisów (entrySet()) dostarczanym przez mapę.

Code
for (Map.Entry<String, Integer> entry : ageMap.entrySet()) {
    System.out.println(entry.getKey() + " ha " + entry.getValue() + " anni.");
}

Spróbuj sam

Ćwiczenie#java.m6.l1.e1
Próby: 0Ładowanie...

Uzupełnij kod, deklarując HashSet obiektów String o nazwie items. Dodaj elementy 'apple', 'banana' i ponownie 'apple', a następnie wypisz w konsoli rozmiar zbioru za pomocą System.out.println.

Ładowanie edytora...
Pokaż wskazówkę

Pamiętaj, że duplikaty nie są dozwolone w `Set`, a `items.size()` zwróci rzeczywistą liczbę wstawionych unikalnych elementów.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#java.m6.l1.e2
Próby: 0Ładowanie...

Uzupełnij kod, deklarując HashMap o nazwie ages z kluczem typu String i wartością typu Integer. Przypisz kluczowi 'Alice' wartość 25, a kluczowi 'Bob' wartość 30, po czym pobierz i wypisz w konsoli wiek 'Bob'.

Ładowanie edytora...
Pokaż wskazówkę

Użyj metody `put` do wstawienia par oraz metody `get` do pobrania wartości na podstawie kluczy.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#java.m6.l1.e3
Próby: 0Ładowanie...

Uzupełnij kod, sprawdzając, czy mapa countries zawiera klucz 'FR' i wypisz wynik logiczny (boolean) w konsoli.

Ładowanie edytora...
Pokaż wskazówkę

Użyj metody `containsKey` na obiekcie `countries`, aby sprawdzić obecność wymaganego klucza.

Rozwiązanie dostępne po 3 próbach