Co to jest Hashmap w Javie? Wyjaśnione z przykładami

Opublikowany: 2021-07-02

HashMap to klasa kolekcji w Javie. Możesz go używać do przechowywania par kluczy i wartości. Jego wydajność zależy od początkowej pojemności i współczynnika obciążenia. HashMap ma różne metody, które pozwalają na użycie struktury danych tabeli haszowania.

W poniższym artykule przyjrzymy się, czym jest HashMap i poznamy jego różne konstruktory na przykładach.

Spis treści

Co to jest HashMap?

HashMap to klasa kolekcji oparta na Mapie. Używamy go do przechowywania par klucz i wartość. Oznaczysz Java HashMap jako HashMap<K, V>, gdzie K oznacza klucz, a V oznacza wartość.

HashMap jest podobny do klasy Hashtable. Różnica między nimi polega na tym, że HashMap jest niezsynchronizowany, podczas gdy Hashtable nie. Ponadto, w przeciwieństwie do Hashtable, HashMap zezwala na wartości null i klucz null.

Ponieważ HashMap nie jest uporządkowaną kolekcją, nie zwraca kluczy i wartości w kolejności ich wstawiania. Ponadto HashMap nie sortuje przechowywanych kluczy i wartości. Jeśli chcesz użyć klasy HashMap i jej metod, będziesz musiał zaimportować java.util.HashMap (lub jej nadklasę).

HashMap daje prostą implementację interfejsu Map w Javie. Dostęp do par klucz-wartość przechowywanych za pośrednictwem HashMap można uzyskać przy użyciu indeksu innego typu (na przykład liczby całkowitej). Pamiętaj, że jeśli użyjesz zduplikowanego klucza, zastąpi on element odpowiedniego klucza. Ponadto możesz użyć tylko jednego obiektu klucza o wartości null; jednak może istnieć dowolna liczba wartości null.

HashMap implementuje interfejsy Cloneable, Serializable, Map<K, V>. Rozszerza klasę AbstractMap<K, V>, a jej bezpośrednie podklasy to PrinterStateReasons i LinkedHashMap.

Funkcje HashMap

Oto główne funkcje w HashMap:

  • Jest to składnik pakietu java.util.package.
  • Możesz użyć zduplikowanych wartości, ale HashMap nie zezwala na zduplikowane klucze. Oznacza to, że jeden klucz nie może mieć wielu wartości, ale wiele kluczy może mieć jedną wartość.
  • Kluczy null można użyć tylko raz, ale można użyć różnych wartości null.
  • HashMap nie udziela żadnych gwarancji dotyczących kolejności mapy. Tak więc nie gwarantuje to, że kolejność pozostanie stała.
  • HashMap jest bardzo podobny do Hashtable, z tą różnicą, że HashMap jest niezsynchronizowany.
  • HashMap implementuje interfejs Serializable i Cloneable.

Konstruktorzy HashMap

W HashMap są cztery konstruktory:

1.HashMap()

HashMap() to domyślny konstruktor, który tworzy instancję ze współczynnikiem obciążenia 0,75 i początkową pojemnością 16.

Przykład :

// Pokazuje, jak działa konstruktor HashMap()

importuj java.io.*;

import java.util.*;

class AddElementsToHashMap {

public static void main(String args[])

{

// Nie musisz wspominać

// Typ ogólny dwa razy

HashMap<Integer, String> hm1 = nowa HashMap<>();

// Używanie Generics do inicjalizacji HashMap

HashMap<Integer, String> hm2

= new HashMap<Integer, String>();

// Użyj metody put, aby dodać dowolny element

hm1.put(1, „A”);

hm1.put(2, „B”);

hm1.put(3, „C”);

hm2.put(4, „D”);

hm2.put(5, „E”);

hm2.put(6, „F”);

System.out.println("Wyniki hm1 to: "

+ hm1);

System.out.println("Wyniki HashMap hm2 to: "

+ hm2);

}

}

Wyjście :

Wyniki hm1 to: {1=A, 2=B, 3=C}

Wyniki hm2 to: {4=D, 5=E, 6=F}

2. HashMap (int InitialCapacity)

HashMap(int initialCapacity) utworzy instancję z obciążeniem 0,75 i określoną pojemnością początkową.

Przykład :

// Pokazuje, jak działa konstruktor HashMap(int initialCapacity)

importuj java.io.*;

import java.util.*;

class AddElementsToHashMap {

public static void main(String args[])

{

// Nie musisz wspominać

// Dwukrotny typ ogólny

HashMap<Integer, String> hm1 = nowa HashMap<>(10);

// Używanie Generics do inicjalizacji HashMap

HashMap<Integer, String> hm2

= nowy HashMap<Integer, String>(2);

// Użyj metody put, aby dodać dowolny element

hm1.put(1, „A”);

hm1.put(2, „B”);

hm1.put(3, „C”);

hm2.put(4, „D”);

hm2.put(5, „E”);

hm2.put(6, „F”);

System.out.println("Wyniki hm1 to: "

+ hm1);

System.out.println("Wyniki HashMap hm2 to: "

+ hm2);

}

}

Wyjście :

Wyniki hm1 to: {1=A, 2=B, 3=C}

Wyniki hm2 to: {4=D, 5=E, 6=F}

3. HashMap (int InitialCapacity, float loadFactor)

HashMap(int initialCapacity, float loadFactor) generuje wystąpienie z określonym współczynnikiem obciążenia i początkową pojemnością.

Przykład :

// Pokazuje, jak działa HashMap(int initialCapacity, float loadFactor) Constructor

importuj java.io.*;

import java.util.*;

class AddElementsToHashMap {

public static void main(String args[])

{

// Nie musisz wspominać

// Dwukrotny typ ogólny

HashMap<Integer, String> hm1

= nowa mapa skrótów<>(5, 0,75f);

// Używanie Generics do inicjalizacji HashMap

HashMap<Integer, String> hm2

= new HashMap<Integer, String>(3, 0.5f);

// Użyj metody put, aby dodać elementy

hm1.put(1, „A”);

hm1.put(2, „B”);

hm1.put(3, „C”);

hm2.put(4, „D”);

hm2.put(5, „E”);

hm2.put(6, „F”);

System.out.println("Wyniki hm1 to: "

+ hm1);

System.out.println("Wyniki HashMap hm2 to: "

+ hm2);

}

}

Wyjście :

Wyniki hm1 to: {1=A, 2=B, 3=C}

Wyniki hm2 to: {4=D, 5=E, 6=F}

4. HashMap (mapa mapy)

HashMap (mapa mapy) utworzy instancję z tymi samymi mapowaniami, co określona mapa.

Przykład :

// Pokazuje, jak działa konstruktor HashMap(Map map)

importuj java.io.*;

import java.util.*;

class AddElementsToHashMap {

public static void main(String args[])

{

// Nie musisz wspominać

// Dwukrotny typ ogólny

Mapa<Integer, String> hm1 = new HashMap<>();

// Używanie Generics do inicjalizacji HashMap

HashMap<Integer, String> hm2

= new HashMap<Integer, String>(hml);

// Użyj metody put, aby dodać dowolny element

hm1.put(1, „A”);

hm1.put(2, „B”);

hm1.put(3, „C”);

hm2.put(4, „D”);

hm2.put(5, „E”);

hm2.put(6, „F”);

System.out.println("Wyniki hm1 to: "

+ hm1);

System.out.println("Wyniki HashMap hm2 to: "

+ hm2);

}

}

Wyjście :

Wyniki hm1 to: {1=A, 2=B, 3=C}

Wyniki hm2 to: {4=D, 5=E, 6=F}

Dowiedz się więcej o Javie

Java ma wiele klas oprócz HashMap. Samodzielne poznanie sedna każdej z tych klas, ich zastosowań i integracji w Javie jest nie lada wyzwaniem. Najlepszym sposobem na pokonanie tego procesu jest wzięcie udziału w kursie informatyki.

Uczestnictwo w profesjonalnym kursie pozwoli Ci opanować niezbędne umiejętności i koncepcje poprzez ustrukturyzowany program nauczania. Co więcej, takie kursy oferują wciągającą naukę, którą ułatwiają filmy, sesje na żywo i wykłady online, które ułatwiają zrozumienie podstaw teoretycznych.

Możesz sprawdzić nasz program Master of Science in Computer Science oferowany we współpracy z LJMU (Liverpool John Moores University, Wielka Brytania) i IIIT-B (Międzynarodowy Instytut Technologii Informacyjnych, Indie). Kurs obejmuje ponad 500 godzin treści, ponad 10 wykładów na żywo i ponad 30 studiów przypadków.

Ten 19-miesięczny kurs obiecuje wysoce zorientowane na wartości i globalne doświadczenie edukacyjne. Największa wartość dodana polega na tym, że możesz łączyć się i angażować z rówieśnikami z całego świata. UpGrad może pochwalić się ponad 40 000 płatnych globalnych uczniów w ponad 85 krajach. W rezultacie jesteś narażony na nowe kultury, nowe opinie i nowe perspektywy, które poszerzają twoje ogólne spojrzenie. Nie tylko to, jesteś szkolony przez doświadczonych mentorów z LJMU i IIIT-B, którzy zapewniają dedykowaną i spersonalizowaną pomoc, aby pomóc rozwiać Twoje wątpliwości.

Oprócz tych zalet program ten zapewni Ci 360-stopniową pomoc w karierze, która obejmuje mentoring branżowy, możliwości nawiązywania kontaktów i wiele więcej.

Wniosek

W tym artykule dowiedzieliśmy się, czym jest HashMap, jego różnymi konstruktorami i jak można je zaimplementować na przykładach. HashMap ma mnóstwo aplikacji w Javie – możesz używać HashMap do dodawania elementów, usuwania ich i zarządzania nimi zgodnie z wymaganiami.

Co myślisz o tym przewodniku po HashMapie? Udostępnij je w sekcji komentarzy poniżej.

Podnieś swoje umiejętności i przygotuj się na przyszłość

Aplikuj teraz na kurs inżynierii oprogramowania LJMU