CodeGym /Blog Java /Random-PL /LinkedHashMap w Javie
John Squirrels
Poziom 41
San Francisco

LinkedHashMap w Javie

Opublikowano w grupie Random-PL

Co to jest LinkedHashMap w Javie?

Klasa LinkedHashMap frameworka Collections jest implementacją Hashtable i LinkedList interfejsu Map . Przechowuje swoje wpisy w Hashtable i używa wewnętrznie podwójnie połączonej listy, aby zachować kolejność wstawiania. Ta LinkedList definiuje kolejność wstawiania, czyli kolejność wstawiania kluczy do mapy . HashMap zapewniał możliwość szybkiego wstawiania , wyszukiwania i usuwania , ale w LinkedHashMap implementacja LinkedList również zachowuje kolejność wstawiania. LinkedHashMap w Javie - 1

Funkcje LinkedHashMap

  1. Zawiera wartości oparte na kluczu.
  2. Zawiera unikalne elementy.
  3. Może mieć jeden klucz zerowy i wiele wartości zerowych.
  4. Jest niezsynchronizowany.
  5. Zachowuje kolejność wstawiania, co powoduje, że iteracja jest droższa.

Czynniki wydajności

Wydajność LinkedHashMap zależy głównie od dwóch czynników opisanych poniżej.

Pojemność

Pojemność oznacza liczbę wpisów, które może przechowywać. Domyślna pojemność wynosi 16 , jeśli nie podano żadnego parametru. Współczynnik obciążenia Współczynnik obciążenia oznacza, że ​​za każdym razem, gdy HashMap zostanie zapełniona do określonego procentu podanego jako parametr, tworzona jest nowa HashMap, która jest dwukrotnie większa i wszystkie wpisy są przenoszone do tej nowej. Domyślny współczynnik obciążenia dla HashMap wynosi 0,75 . Nazywa się go również współczynnikiem wypełnienia .

Deklaracja LinkedHashMap

Aby utworzyć LinkedHashMap najpierw musimy zaimportować pakiet java.util.LinkedHashMap .
LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
Tutaj Klucz jest rodzajem kluczy na mapie. Wartość to typ mapowanych wartości na mapie. 12 to pojemność, co oznacza, że ​​będzie przechowywać 12 wpisów na mapie. 0,5f to współczynnik obciążenia, co oznacza, że ​​gdy zapełnione zostanie 50%, utworzy nową mapę i przeniesie wszystkie wartości do tej nowej.

Typowe metody LinkedHashMap

Oto lista niektórych typowych metod LinkedHashMap .
Metody Opis
jasne() Usuwa wszystkie mapowania na mapie.
zawieraWartość (wartość obiektu) Zwraca wartość true, jeśli mapa odwzorowuje klucz na określoną wartość.
zestaw wpisów() Zwraca widok zestawu mapowań na mapie.
pobierz (klucz obiektu) Zwraca wartość względem określonego klucza lub wartość null, jeśli nie określono żadnego klucza.
zestaw kluczy() Zwraca widok zestawu kluczy na mapie.
wartości() Zwraca widok kolekcji wartości na mapie.
getOrDefault (klucz obiektu, wartość domyślna V) Zwraca wartość, z którą jest powiązany określony klucz, lub wartość domyślną, jeśli nie jest powiązany żaden klucz.

Przykład LinkedHasMap

import java.util.LinkedHashMap;

class Main {
    public static void main(String[] args) {
        // Creating a LinkedHashMap of odd numbers
        LinkedHashMap<String, Integer> oddNumbers = new LinkedHashMap<>();
        // Using the put() method
        oddNumbers.put("One", 1);
        oddNumbers.put("Three", 3);
        System.out.println("LinkedHashMap1: " + oddNumbers);

        // Creating another LinkedHashMap
        LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
        numbers.put("Two", 2);
        // Using putAll() method
        numbers.putAll(oddNumbers);
        System.out.println("LinkedHashMap2: " + numbers);

        // Using entrySet() method
        System.out.println("Key/Value mappings: " + numbers.entrySet());

        // Using keySet() method
        System.out.println("Keys: " + numbers.keySet());

        // Using values() method
        System.out.println("Values: " + numbers.values());

        // Using get() method
        int value1 = numbers.get("Three");
        System.out.println("Returned Number: " + value1);

        // Using getOrDefault() method
        int value2 = numbers.getOrDefault("Five", 5);
        System.out.println("Returned Number: " + value2);

        // Using remove() method
        int value = numbers.remove("Two");
        System.out.println("Removed value: " + value);

        // Using entrySet() method
        System.out.println("Key/Value mappings: " + numbers.entrySet());
    }
}

Wyjście

LinkedHashMap1: {Jeden=1, Trzy=3} LinkedHashMap2: {Dwa=2, Jeden=1, Trzy=3} Mapowania klucz/wartość: [Dwa=2, Jeden=1, Trzy=3] Klucze: [Dwa, Jeden , Three] Wartości: [2, 1, 3] Zwrócona liczba: 3 Zwrócona liczba: 5 Usunięta wartość: 2 Mapowania klucz/wartość: [Jeden=1, Trzy=3]

LinkedHashMap kontra HashMap

Zobaczmy pewne różnice między nimi, podczas gdy oba implementują interfejs Map .
  1. LinkedHashMap utrzymuje kolejność wstawiania, ponieważ wewnętrznie implementuje listę podwójnie połączoną.
  2. LinkedHashMap potrzebuje więcej miejsca, ponieważ implementuje LinkedList .
  3. Jeśli chodzi o wydajność, LinkedHashMap jest wolniejszy niż HashMap .

Wniosek

Mamy nadzieję, że rozumiesz klasę LinkedHashMap w Javie, jej różne metody i ich implementację. Możesz ćwiczyć i wrócić, gdy będziesz potrzebować dodatkowej pomocy. Miłej nauki!
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION