Java map – podstawy, przykłady i najlepsze praktyki
Ostatnia aktualizacja 5 kwietnia, 2024
Java map to jeden z podstawowych interfejsów w Java Collections Framework. Umożliwia przechowywanie elementów w parach klucz-wartość. Każdy klucz jest unikatowy, a to pozwala na szybkie wyszukiwanie, dodawanie oraz usuwanie wartości. Mapy znajdują szerokie zastosowanie w programowaniu – od prostego przechowywania ustawień konfiguracyjnych, po skomplikowane struktury danych w aplikacjach biznesowych.
Podstawowe operacje na Java map
W tej sekcji przedstawiamy podstawowe operacje na mapach w Javie, czyli: tworzenie, dodawanie elementów i iteracja.
Tworzenie mapy:
Map<String, Integer> liczby = new HashMap<>();
W powyższym przykładzie tworzymy mapę liczby, w której klucze to łańcuchy znaków (String), a wartości to liczby całkowite (Integer). Używamy implementacji HashMap, która jest jedną z najczęściej wykorzystywanych implementacji interfejsu Map w Javie.
Dodawanie elementów:
liczby.put("jeden", 1);
liczby.put("dwa", 2);
liczby.put("trzy", 3);
Metoda put pozwala dodać parę klucz-wartość do mapy. Jeśli mapa już zawiera klucz, wartość zostanie zaktualizowana.
Wyszukiwanie elementu:
Integer wartosc = liczby.get("dwa");
System.out.println(wartosc); // Wypisze „2"
Metoda get pozwala pobrać wartość skojarzoną z kluczem. W tym przypadku szukamy wartości dla klucza „dwa”.
Iteracja po elementach mapy:
for (Map.Entry<String, Integer> wpis : liczby.entrySet()) {
String klucz = wpis.getKey();
Integer wartosc = wpis.getValue();
System.out.println(klucz + " => " + wartosc);
}
Używamy pętli for do iteracji po zbiorze wpisów (entrySet) mapy. Dla każdego wpisu, możemy uzyskać klucz i wartość.
Zaawansowane operacje na Java map
Zaawansowane operacje na mapach w Javie umożliwiają tworzenie bardziej skomplikowanych manipulacji i zapytań.
Usuwanie elementów:
liczby.remove(„dwa");
Metoda remove usuwa parę klucz-wartość na podstawie klucza. W tym przypadku usuwamy wpis dla klucza „dwa”.
Sprawdzanie obecności klucza lub wartości:
boolean zawieraKlucz = liczby.containsKey("trzy");
boolean zawieraWartosc = liczby.containsValue(3);
Metody containsKey i containsValue pozwalają sprawdzić, czy mapa zawiera określony klucz lub wartość.
Zastępowanie elementów:
liczby.replace("jeden", 10);
Metoda replace zastępuje wartość dla istniejącego klucza nową wartością. W tym przypadku wartość dla klucza “jeden” zostaje zastąpiona wartością 10.
Java map i strumienie
Java 8 wprowadziła strumienie, które umożliwiają bardziej deklaratywne operacje na kolekcjach, w tym na mapach.
Filtrowanie mapy:
liczby.entrySet().stream()
.filter(e -> e.getValue() > 1)
.forEach(e -> System.out.println(e.getKey() + " => " + e.getValue()));
Tutaj filtrujemy mapę, aby wyświetlić tylko te wpisy, których wartości są większe niż 1.
Zbieranie do mapy:
Map<String, Integer> filtrowane = liczby.entrySet().stream()
.filter(e -> e.getValue() > 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
Używamy collect z Collectors.toMap, aby stworzyć nową mapę z wpisów spełniających określony warunek.
Dalsza część tekstu znajduje się pod materiałem wideo:
Kiedy najlepiej korzystać z Java map?
- Szybki dostęp do elementów za pomocą unikalnych kluczy. Mapy umożliwiają natychmiastowe wyszukiwanie, co jest istotne w strukturach danych typu słownik.
- Zarządzanie zestawami ustawień konfiguracyjnych. Idealne do przechowywania par nazwa opcji – wartość, zapewniając prosty dostęp i modyfikację.
- Mapowanie identyfikatorów na obiekty. Niezastąpione w systemach zarządzania użytkownikami, gdzie kluczem jest identyfikator, a wartością – obiekt użytkownika.
- Ułatwienie agregacji i grupowania danych. Umożliwia efektywne podsumowanie danych, kluczowe w algorytmach przetwarzających duże zbiory informacji.
- Wydajność przy częstych operacjach wyszukiwania, dodawania lub usuwania. Mapy przyspieszają te operacje. Jest to istotne w aplikacjach o wysokiej intensywności danych.
Dziękujemy, że przeczytałaś/eś nasz artykuł. Obserwuj EnterTheCode.pl w Wiadomościach Google, aby być na bieżąco.
Czytaj także:
Error:Java error: release version 5 not supported – rozwiązanie