linkedhashmap java linkedhashmap example implementation
Ten samouczek wyjaśnia wszystko o LinkedHashMap w Javie, w tym na przykładzie i metodach LinkedHashMap, implementacji w Javie, LinkedHashMap kontra HashMap:
LinkedHashMap w Javie to implementacja, która łączy implementację HashTable i LinkedList. Implementuje interfejs Map. Pary klucz-wartość LinkedHashMap mają przewidywalną kolejność iteracji.
Oprócz interfejsu Map, LinkedHashMap rozszerza również klasę HashMap.
=> Odwiedź tutaj, aby zobaczyć serię szkoleń Java dla wszystkich.
czym jest plan testów w testowaniu oprogramowania
Czego się nauczysz:
LinkedHashMap w Javie
Niektóre z głównych cech LinkedHashMap to:
- Zawiera wartości oparte na kluczach.
- Zachowuje kolejność wstawiania par klucz-wartość.
- Nie pozwala na duplikaty, ma unikalne elementy.
- Może mieć pojedynczy klucz pusty. Ale zezwala na wiele wartości null.
- Java LinkedHashMap nie jest zsynchronizowana.
Deklaracja LinkedHashMap
Klasa LinkedHashMap w Javie jest częścią pakietu java.util.
Ogólna deklaracja tej klasy w Javie jest następująca:
public class LinkedHashMap extends HashMap implements Map
Tutaj K => rodzaj kluczy na mapie.
V => typ wartości przypisanych do kluczy.
Poniżej przedstawiono hierarchię klas LinkedHashMap:
Jak pokazano na powyższym diagramie, LinkedHashMap dziedziczy klasy HashMap i AbstractMap oraz implementuje interfejs Map.
Przykład LinkedHashMap
Poniżej podano prosty przykład.
import java.util.*; class Main{ public static void main(String args[]){ //declare and initialize LinkedHashMap LinkedHashMap num_map=new LinkedHashMap(); num_map.put(1,'ONE'); num_map.put(2,'TWO'); num_map.put(3,'THREE'); num_map.put(4,'FOUR'); num_map.put(5,'FIVE'); System.out.println('The contents of LinkedHashMap:'); //retrieve the key-value pairs as set using entrySet & print each entry for(Map.Entry m:num_map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Wynik:
Zawartość LinkedHashMap:
1 JEDEN
2 DWA
3 TRZY
4 CZTERY
5 PIĘĆ
Konstruktorzy i metody
Omówmy konstruktory i metody udostępniane przez klasę LinkedHashMap. Najpierw omówimy konstruktory, a następnie metody.
jak napisać plan testów
Konstruktorzy
Prototyp konstruktora | Opis | |
---|---|---|
zestaw kluczy | Ustaw keySet () | Zwraca zestaw kluczy w mapie. |
LinkedHashMap () | Domyślny konstruktor dla LinkedHashMap. | |
LinkedHashMap (pojemność int) | Tworzy obiekt LinkedHashMap o danej pojemności. | |
LinkedHashMap (pojemność int, współczynnik obciążenia zmiennoprzecinkowego) | Tworzy obiekt LinkedHashMap o podanej pojemności i loadFactor. | |
LinkedHashMap (int capacity, float loadFactor, boolean accessOrder) | Tworzy obiekt LinkedHashMap o danej pojemności i loadFactor. Określony jest również tryb zamawiania (accessOrder). | |
LinkedHashMap (mapa m) | Tworzy obiekt LinkedHashMap i inicjuje go z wartościami z mapy przekazanymi jako argument. |
Metody
metoda | Prototyp metody | Opis |
---|---|---|
otrzymać | V get (klucz obiektu) | Zwraca wartość dla podanego klucza. |
jasny | void clear () | Czyści wszystkie pary klucz-wartość na mapie. |
zawieraValue | boolean zawieraValue (wartość obiektu) | Sprawdza, czy mapa zawiera jeden lub więcej kluczy zamapowanych na daną wartość. Zwraca wartość true, jeśli tak. |
entrySet | Zestaw | Zwraca zestaw wpisów na mapie. |
dla każdego | void forEach (akcja BiConsumer) | Wykonuje daną akcję dla wszystkich wpisów na mapie. |
getOrDefault | V getOrDefault (klucz obiektu, V defaultValue) | Zwraca wartość zamapowaną na klucz. Jeśli żadna wartość nie jest mapowana, zwracana jest wartość domyślna. |
removeEldestEntry | protected boolean removeEldestEntry (Map.Entry eldest) | Usuwa najstarszy wpis na mapie i zwraca prawdę po usunięciu. |
Zamień wszystko | void replaceAll (funkcja BiFunction) | Wywołuje daną funkcję dla każdego wpisu i zastępuje wynik funkcji wartościami. |
wartości | Wartości kolekcji () | Zwraca zbiór wartości na mapie. |
Implementacja w Javie
Poniższy program Java przedstawia implementację LinkedHashMap, demonstrując metody omówione powyżej.
import java.util.*; public class Main { public static void main(String a[]) { //declare LinkedHashMap and initialize it with values LinkedHashMap colors_map = new LinkedHashMap(); colors_map.put('one', 'Red'); colors_map.put('two', 'Green'); colors_map.put('three', 'Blue'); // Original LinkedHashMap System.out.println('Original LinkedHashMap:' + colors_map); //isEmpty () System.out.println('LinkedHashMap 'colors_map' empty?:' + colors_map.isEmpty()); //size () System.out.println('Size of the map: ' + colors_map.size()); //get () System.out.println('Value for key = 'one':' + colors_map.get('one')); //containsKey () System.out.println('colors_map contains key = 'two':'+ colors_map.containsKey('two')); //containsValue () System.out.println('colors_map contains value 'ree':' + colors_map.containsValue('ree')); //remove () System.out.println('delete element 'one': ' + colors_map.remove('one')); System.out.println('Updated colors_map:' + colors_map); } }
Wynik:
Oryginalny LinkedHashMap: {jeden = czerwony, dwa = zielony, trzy = niebieski}
LinkedHashMap „colors_map” jest pusty?: False
Rozmiar mapy: 3
Wartość klucza = „jeden”: czerwony
mapa kolorów zawiera klucz = „dwa”: prawda
colors_map zawiera wartość „ree”: false
usuń element „jeden”: czerwony
Zaktualizowana mapa kolorów: {dwa = zielony, trzy = niebieski}
W tym programie deklarujemy mapę kolorów i inicjalizujemy ją. Następnie używamy różnych metod omówionych powyżej, aby uzyskać wyniki.
LinkedHashMap Vs HashMap
LinkedHashMap | HashMap | ||
---|---|---|---|
Złożoność czasowa podstawowych operacji | O (1) | O (1) | O (1) |
Realizuje uporządkowane mapy. | Implementuje nieuporządkowane mapy. | ||
Używa podwójnie połączonej listy zasobników. | Używa tabeli skrótów. | ||
Utrzymuje porządek podczas iteracji elementów. | Nie zachowuje kolejności podczas iteracji. | ||
Wymaga więcej pamięci. | Wymaga mniej pamięci niż LinkedHashMap. | ||
Podstawowe operacje, takie jak dodawanie, usuwanie, wyszukiwanie itp., Są wolniejsze. | Podstawowe operacje, takie jak dodawanie, usuwanie wyszukiwania, są szybsze. |
HashMap Vs TreeMap Vs LinkedHashMap
Porównajmy teraz trzy implementacje map, a mianowicie. HashMap, TreeMap i LinkedHashMap.
Poniższa tabela przedstawia porównanie / różnicę.
Parametr porównawczy | HashMap | LinkedHashMap | TreeMap |
---|---|---|---|
Berło | Mapa | Mapa | Mapa, SortedMap, NavigableMap |
Struktura danych | Lista wiader | Podwójnie połączona lista segmentów | Drzewo czerwono-czarne |
Kolejność iteracji | Brak zamówienia. | Posortowano według zamówienia reklamowego | Posortowane według naturalnego uporządkowania elementów |
Null Keys | Są dozwolone | Są dozwolone | Nie dozwolony |
Synchronizacja | Niezsynchronizowane | Niezsynchronizowane | Niezsynchronizowane |
Wymagane klucze | Trzeba nadpisać metody equals () i hashCode () | Trzeba nadpisać metody equals () i hashCode () | Zachowana jest naturalna kolejność lub należy dostarczyć komparator |
Często Zadawane Pytania
Pytanie 1) Co to jest LinkedHashMap w Javie?
Odpowiedź: LinkedHashMap w Javie jest zaimplementowany jako połączenie HashTable i LinkedList. Implementuje interfejs mapy. Ma przewidywalną kolejność iteracji. Wewnętrznie używa listy podwójnie połączonej dla wpisów.
Pytanie nr 2)Jak działa LinkedHashMap w Javie?
Odpowiedź: Jest podobny do HashMap, ale różni się od HashMap w kolejności wstawiania, którą utrzymuje LinkedHashMap. Elementy w LinkedHashMap są przechowywane w ten sam sposób, w jaki są wprowadzane do struktury danych.
gdzie mogę oglądać darmowe animacje
Pytanie nr 3)Jak przeglądać LinkedHashMap?
Odpowiedź: Możemy przeglądać LinkedHashMap za pomocą iteratora.
Poniżej przedstawiono kroki, które możemy wykonać, aby iterować przez LinkedHashMap za pomocą iteratora:
- Utwórz nowy obiekt LinkedHashMap.
- Użyj metody Put API, aby wstawić pary klucz-wartość w mapie.
- Wywołaj metodę interfejsu API entrySet (), aby uzyskać zestaw par klucz-wartość w mapie.
- Wywołaj iterator na tym zestawie, aby pobrać każdą parę klucz-wartość za pomocą metod API getKey () i getValue ().
Pytanie 4)Jaki jest pożytek z LinkedHashMap w Javie?
Odpowiedź: Głównym zastosowaniem LinkedHashMap w Javie jest użycie go do zachowania kolejności reklamowej. Można go również użyć do zachowania kolejności dostępu, za pomocą której uzyskuje się dostęp do kluczy. Ponieważ jest szybszy niż HashMap, LinkedHashMap może być używany zamiast HashMap, gdzie wydajność jest krytyczna.
Pytanie nr 5)Czy HashMap jest szybszy niż LinkedHashMap?
Odpowiedź: Oba mają podobną wydajność. HashMap potrzebuje mniej pamięci w porównaniu do LinkedHashMap, ponieważ HashMap nie utrzymuje kolejności dostępu. W ten sposób HashMap jest stosunkowo szybszy.
Wniosek
W tym samouczku omówiliśmy LinkedHashMap w Javie. Widzieliśmy szczegóły dotyczące deklaracji klas, hierarchii klas, konstruktorów i metod.
Poznaliśmy również podstawowe różnice między LinkedHashMap i HashMap. Omówiliśmy również 3-stopniową różnicę między LinkedHashMap, HashMap i TreeMap.
W naszym nadchodzącym samouczku omówimy więcej tematów dotyczących środowiska Java Collection Framework.
=> Obejrzyj serię prostych szkoleń dotyczących języka Java.
rekomendowane lektury
- Samouczek dotyczący refleksji w języku Java z przykładami
- Dogłębne samouczki dotyczące Eclipse dla początkujących
- Co to jest Java HashTable - implementacja HashTable i przykład
- Samouczek JAVA dla początkujących: ponad 100 praktycznych samouczków wideo Java
- Modyfikatory dostępu w Javie - samouczek z przykładami
- Samouczek Java SWING: kontener, komponenty i obsługa zdarzeń
- Java String zawiera () Samouczek dotyczący metody z przykładami
- Ciąg Java z buforem ciągów i samouczek dotyczący tworzenia ciągów