Jak używać hashmap w Javie

Jak używać hashmap w Javie
Zanim dowiedzieć się, jak użyć hashmapy w Javie, czytelnik musi wiedzieć, czym jest hashmap. Rozważ następujące pary klucza/wartości owoców i ich kolory: czerwone jabłko => czerwone
Banan => żółty
cytryna => jasnożółty
wapno => żółta zieleń
Kivi => zielony
Awokado => zielony
Winogron => fioletowy
Ryc. => Purple
=> - - - - -
=> - - - - -
=> - - - - -

Kolumna po lewej ma klawisze, a kolumna po prawej stronie ma odpowiednie wartości. Zauważ, że owoce, Kivi i awokado mają ten sam kolor, zielony. Również owoce, winogrona i figi mają ten sam kolor, fioletowy. Na końcu listy trzy lokalizacje czekają na własne kolory. Lokalizacje te nie mają odpowiednich owoców; Innymi słowy, te trzy lokalizacje nie mają odpowiednich kluczy.

Wszystkie lokalizacje, czy to wypełnione, czy nie, po prawej stronie są nazywane wiadrami. Dla każdej wartości jest klucz. Klucze są wyjątkowe. Wartości nie muszą być unikalne. To jest związek wielu do jednego.

To, co jest przechowywane w tabeli, to prawa kolumna. To znaczy, co jest przechowywane w tabeli. Klucze nie muszą być przechowywane. Klucz jest wysyłany jako argument do funkcji zwanej funkcją skrótu, aby osiągnąć wartość. Funkcja skrótu wytwarza odpowiedni wskaźnik powiązany z określoną wartością.

Każda struktura, która pasuje do wszystkich powyższych opisów, nazywa się skrót. Z hashmapem w Javie klucze są jednym typem obiektu, a wartości są innego typu obiektu. Może być jeden klucz zerowy i może być więcej niż jedna wartość zerowa.

Rozmiar hashmapu to liczba par kluczy/wartości (wpisy). Pojemność hashmapu to liczba wiader, czy to wypełnione, czy nie. Pojemność powinna być zawsze większa niż rozmiar.

Wraz z powyższym wprowadzeniem czytelnik może teraz nauczyć się, jak używać hashmapu w Javie.

Treść artykułu

  • Budowa
  • W tym pary klucza/wartości
  • Rozmiar hashmapy
  • Czytanie hashmapu
  • Modyfikowanie hashmapu
  • Wniosek

Budowa

Hashmap to klasa, z której można utworzyć obiekt hashmap. Tworzenie obiektu z klasy konstruuje obiekt. Istnieją 4 sposoby konstruowania hashmapy w Javie.

Współczynnik obciążenia

Współczynnik obciążenia to liczba par kluczy/wartości podzielonych przez liczbę wiader.

Hashmap ()

Ta metoda konstruktora stworzyłaby hashmap pojemności 16 i współczynnika obciążenia 0.75. Oznacza to, że liczba wiader będzie 16 (i pusta), a domyślnym współczynnikiem obciążenia wynosi 0.75. Po utworzeniu hashmapu zostaną uwzględnione pary klucza/wartości. W takim przypadku, gdy liczba par kluczy/wartości osiągnie 12, przy 12/16 = 0.75, hasze. Oznacza to, że automatycznie zwiększy liczbę wiader do 32 (podwojenie). Poniższy kod pokazuje, jak utworzyć obiekt hashmap za pomocą tego konstruktora:

Importuj Java.Util.*;
klasa thlass
public static void main (string [] args)
Hashmap hm = new Hashmap ();

Klasa hashmap jest w Javie.pakiet UTIL. W przypadku tego kodu klucze byłyby ciągi, a wartości również byłyby ciągi.

Hashmap (int inicidealCapacity)

To pozwala programistowi zacząć od innej pojemności, ale nadal od współczynnika obciążenia 0.75. Ilustracja:

Importuj Java.Util.*;
klasa thlass
public static void main (string [] args)
Hashmap hm = new Hashmap (20);

Tak więc obiekt HASMAP rozpoczyna się od 20 pustych wiader. Tutaj klucze są liczbowymi. Różnią się od indeksów tablicy w tym sensie, że pierwszy indeks niekoniecznie wynosi zero. Ponadto indeksy nie są przylegające. Na przykład pierwszy indeks może 20; Następny to 35, jeden po 52 itp.

UWAGA: W przypadku skrótów zamawianie par kluczy/wartości nie jest utrzymywane. To znaczy, jeśli zestaw par kluczy/wartości jest zawarty w jednej kolejności, po wyświetlaniu treści, kolejność będzie inna, chociaż wszystkie dołączone pary klucza/wartości nadal tam będą.

Pary klucza/wartości dla hashmapu są lepiej określane jako mapowania.

Hashmap (int inicidealCapacity, float LoadFactor)

Tutaj cytowany jest również współczynnik obciążenia. Współczynnik obciążenia jest typem pływaka, a nie typ liczb całkowitych. Tutaj współczynnik obciążenia inny niż 0.75 jest cytowane. Istnieją zalety i wady posiadania współczynnika obciążenia, który różni się od 0.75 - patrz później. Ilustracja:

Importuj Java.Util.*;
klasa thlass
public static void main (string [] args)
Hashmap hm = nowa hashmap (20,0.62f);

Zwróć uwagę na użycie „f” jako sufiaka dla współczynnika obciążenia.

Hashmap (mapa m)
Ten konstruktor utworzy hashmap z mapy, która już istnieje - patrz później.

W tym pary klucza/wartości

PUT (KLUCZ K, WARTOŚĆ V)
Ta metoda odnosi szczególną wartość do konkretnego klucza. Klucz jest faktycznie osadzony w indeksie, który jest bezpośrednio powiązany z wartością. Jednak to programista lub użytkownik decyduje o wartości i jej kluczu. Poniższy przykład tworzy HASMAP, HM i zawiera wszystkie pary klucza/wartości i puste wiadra z góry:

Importuj Java.Util.*;
klasa thlass
public static void main (string [] args)
Hashmap hm = new Hashmap (11);
Hm.Put („czerwone jabłko”, „czerwony”);
Hm.Put („banan”, „żółty”);
Hm.Put („cytryna”, „jasnożółty”);
Hm.Put („limonka”, „żółta zieleń”);
Hm.Put („Kivi”, „zielony”);
Hm.put („awokado”, „zielony”);
Hm.Put („winogrona”, „fioletowe”);
Hm.Put („Fig”, „Purple”);

Pojemność wynosi 11. Liczba par kluczy/wartości wynosi 8. Oznacza to, że rozmiar to 8. Tak więc skuteczny współczynnik obciążenia wynosi 8/11 = 0.73f. Liczba pustych wiader wynosi 11 - 8 = 3.

putifabsent (klucz k, wartość v)
Obejmuje to parę klucza/wartości, jeśli klucz nie istnieje jeszcze w hashmapie. W takim przypadku wartość zwracana jest null. Jeśli klucz już istnieje, nic się nie zmienia, a stara wartość dla klucza jest zwracana. Jeśli do dołu powyższego kodu (w main ()) dodano następujący kod, dane wyjściowe byłoby zerowe:

String v = HM.Putifabsent („Watermelon”, „zielony”);
System.na zewnątrz.println (v);

Uwaga: PUT (KLUCZ K, WARTOŚĆ V) PRZESUSZAŁY PARY KLUCZ/WARTO.

Rozmiar hashmapy

Rozmiar hashmapu to liczba par kluczy/wartości.

rozmiar()
Poniższe stwierdzenie zwróci rozmiar hashmap:

int sz = hm.rozmiar();

jest pusty()
Ta metoda, zwraca true, jeśli hashmap nie zawiera żadnych odwzorowań wartości kluczowej lub Fałsz w przeciwnym razie. Przykład:

Boolean Bl = HM.jest pusty();
System.na zewnątrz.println (BL);

Pusta hashmap może mieć puste wiadra.

Czytanie hashmapu

Get (klucz obiektu)
Zwraca (kopiuje) wartość odpowiadającą klucze; lub zwraca null, jeśli nie ma odpowiedniej wartości. Przykład:

String str = hm.Get („Banana”);
System.na zewnątrz.println (str);

zawiera (klucz obiektowy)
Zwraca prawdziwie, jeśli istnieje mapowanie dla tego konkretnego klucza; Fałsz inaczej. Przykład:

Boolean Bl = HM.zawiera („banan”);

zawiera wartość (wartość obiektu)
Zwraca prawdziwie, jeśli istnieje mapowanie dla tej wartości; Fałsz inaczej. Przykład:

Boolean Bl = HM.zawiera wartość („zielony”);

zestaw kluczy()
Ta metoda zwraca wszystkie klucze par kluczy/wartości. Przykładowy kod:

SET ST = HM.zestaw kluczy();
dla (String Val: ST)
System.na zewnątrz.print (val + ",");
System.na zewnątrz.println ();

Zauważ, że obiekt powrotu jest zestawem. Jeśli używana jest powyższa oryginalna hashmap, wyjście byłoby:

Lemon, Kivi, Fig, winogrona, wapno, awokado, czerwone jabłko, banan,

Zauważ, że zamówienie nie jest kolejnością, w której dołączone były klucze.

wartości ()
Ta metoda zwraca zbiór wszystkich wartości w hashmapie. Przykładowy kod:

Kolekcja Cl = HM.wartości ();
dla (String Val: Cl)
System.na zewnątrz.print (val + ",");
System.na zewnątrz.println ();

Zauważ, że obiekt powrotny jest kolekcją. Jeśli używana jest powyższa oryginalna hashmap, wyjście byłoby:

Blasty żółty, zielony, fioletowy, fioletowy, żółto-zielony, zielony, czerwony, żółty,

Zauważ, że zamówienie nie jest kolejnością, w której uwzględniono wartości.

Entymet ()
Zwraca to wszystkie pary klucza/wartości, ale programista musi oddzielić każdy klucz od odpowiedniej wartości. Przykładowy kod:

Ustawić STM = HM.EntrySet ();
dla (mapa.Entry Kv: STM)
System.na zewnątrz.println (kv.getKey () + "=>" + kv.getValue ());

Jeśli używana jest powyższa oryginalna hashmap, wyjście byłoby:

cytryna => jasnożółty
Kivi => zielony
Ryc. => Purple
Winogron => fioletowy
wapno => żółta zieleń
Awokado => zielony
Czerwone jabłko => czerwone
Banan => żółty

Zauważ, że zamówienie nie jest kolejnością, w której uwzględniono pary klucza/wartości.

Modyfikowanie hashmapu

PUT (KLUCZ K, WARTOŚĆ V)
Metoda put () jest podobna do metody putifabsent (), ponieważ jeśli klucz już istnieje, stara wartość jest zwracana, a jeśli klucz jeszcze nie istnieje, null jest zwracany. Nie zapominaj, że put () zastępuje starą wartość, jeśli klucz już istnieje. Jeśli klucz jeszcze nie istnieje, Put () zawiera nowy wpis (para klucza/wartości).

Wymień (klucz K, wartość V)
W przypadku klucza, który jest już na miejscu, metoda ta służy do zastąpienia wartości dla odpowiedniego klucza. Hashmap to struktura wielu do jednego. Przykładowym kodem powyższego hashmap jest:

String v = HM.zamień („banan”, „biały”);
System.na zewnątrz.println (v);
String str = hm.Get („Banana”);
System.na zewnątrz.println (str);

Wyjście to:

żółty
biały

Metoda zastępcza () zwraca starą wartość. Jeśli klucz nie istnieje, zwraca NULL i nic nie jest zastąpione.

Wymień (KLEY K, V OLDVALUE, V NEWVALUE)
Umożliwia to wymianę konkretnej wartości, o której wiedział programista. Zwraca prawdę, jeśli się powiedzie i fałszywe, jeśli tak nie. Przykładowy kod powyższego obiektu Hashmap to:

Boolean Bl = HM.zamień („winogron”, „fioletowy”, „brąz”);
System.na zewnątrz.println (BL);

Usuń (klucz obiektu)
To usuwa parę klawisza/wartości odwzorowaną przez klucz. Zwraca odpowiednią wartość usuniętą. Zwraca Null, jeśli klucz nie był obecny. Przykładowy kod powyższego hashmap jest:

String v = HM.usuń („banan”);
System.na zewnątrz.println (v);

Usuń (klucz obiektu, wartość obiektu)
Umożliwia to usunięcie wpisu (pary klucza/wartości) dla konkretnej wartości, o której wiedział programista. Zwraca prawdę, jeśli się powiedzie i fałszywe, jeśli tak nie. Przykładowy kod powyższego obiektu Hashmap to:

Boolean Bl = HM.usuń („awokado”, „zielony”);
System.na zewnątrz.println (BL);

Wniosek

Tablicę można uznać za mapowanie indeksów na wartości (określonego typu). Hashmap powinien być używany, gdy potrzebne jest mapowanie jednego typu obiektu na inny typ obiektu. W ten sposób istnieją pary klucza/wartości. Hash to struktura danych, w której liczba wartości jest ograniczona, ale liczba możliwych kluczy jest większa niż liczba możliwych wartości. I tak trzeba mieć klucze, aby osiągnąć wartości. Java Hashmap dla jego niejawnej funkcji hash został przedstawiony powyżej. Programista może napisać własną funkcję haszu (mapowania). Jest to jednak temat na jakiś czas.

Chrys