„Java HashMap“ (su pavyzdžiais)

Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java HashMap“ klasę ir įvairias jos operacijas.

HashMapJava“ kolekcijų sistemos klasė suteikia maišos lentelės duomenų struktūros funkcionalumą.

Elementai saugomi raktų / reikšmių porose. Čia raktai yra unikalūs identifikatoriai, naudojami susieti kiekvieną vertę žemėlapyje.

HashMapKlasės įgyvendina Žemėlapio sąsaja.

„Java HashMap“ diegimas

Sukurkite „HashMap“

Norėdami sukurti maišos žemėlapį, pirmiausia turime importuoti java.util.HashMappaketą. Kai importuosime paketą, štai kaip galime sukurti „Java“ hashmaps.

 // hashMap creation with 8 capacity and 0.6 load factor HashMap numbers = new HashMap();

Pirmiau pateiktame kode sukūrėme hashmap pavadintus skaičius. Čia K reiškia rakto tipą, o V - reikšmių tipą. Pavyzdžiui,

 HashMap numbers = new HashMap();

Čia, tipo raktų yra Stringir tipo reikšmių yra Integer.

1 pavyzdys: sukurkite „HashMap“ „Java“

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap languages = new HashMap(); // add elements to hashmap languages.put("Java", 8); languages.put("JavaScript", 1); languages.put("Python", 3); System.out.println("HashMap: " + languages); ) )

Rezultatas

 „HashMap“: („Java“ = 8, „JavaScript“ = 1, „Python“ = 3)

Ankstesniame pavyzdyje mes sukūrėme HashMapįvardytas kalbas.

Čia mes naudojome put()metodą elementams pridėti prie hashmap. Daugiau apie put()metodą sužinosime vėliau šioje pamokoje.

Pagrindinės „Java HashMap“ operacijos

HashMapKlasė teikia įvairius metodus, atlikti įvairias operacijas hashmaps. Šioje pamokoje apžvelgsime keletą dažniausiai naudojamų masyvų sąrašo operacijų:

  • Pridėti elementų
  • Prieigos elementai
  • Keisti elementus
  • Pašalinti elementus

1. Pridėkite elementų prie „HashMap“

Norėdami pridėti vieną elementą prie hashmap, mes naudojame klasės put()metodą HashMap. Pavyzdžiui,

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap numbers = new HashMap(); System.out.println("Initial HashMap: " + numbers); // put() method to add elements numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("HashMap after put(): " + numbers); ) )

Rezultatas

 Pradinis HashMap: () HashMap po įdėjimo (): (Vienas = 1, Du = 2, Trys = 3)

Ankstesniame pavyzdyje mes sukūrėme HashMappavadintus skaičius. Čia mes naudojome put()metodą elementams pridėti prie skaičių.

Atkreipkite dėmesį į pareiškimą,

 numbers.put("One", 1);

Čia metodo reikšmę perduodame kaip Stringreikšmę „One“ ir Integerreikšmę „1“ put().

Rekomenduojami skaitiniai

  • „Java HashMap put“ ()
  • „Java HashMap putAll“ ()
  • „Java HashMap putIfAbsent“ ()

2. Prisijunkite prie „HashMap Elements“

Mes galime naudoti get()metodą, norėdami pasiekti vertę iš „hashmap“. Pavyzdžiui,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // get() method to get value String value = languages.get(1); System.out.println("Value at index 1: " + value); ) )

Rezultatas

 „HashMap“: (1 = Java, 2 = Python, 3 = JavaScript) 1 indekso reikšmė: „Java“

Ankstesniame pavyzdyje atkreipkite dėmesį į išraišką,

 languages.get(1);

Čia get()metodas pateikia raktą kaip argumentą ir grąžina atitinkamą reikšmę, susietą su raktu.

Mes taip pat galime pasiekti raktus , vertybes ir raktas / vertės poras į HashMap kaip nustatyta vaizdu naudojant keySet(), values()ir entrySet()metodus, atitinkamai. Pavyzdžiui,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // return set view of keys // using keySet() System.out.println("Keys: " + languages.keySet()); // return set view of values // using values() System.out.println("Values: " + languages.values()); // return set view of key/value pairs // using entrySet() System.out.println("Key/Value mappings: " + languages.entrySet()); ) )

Rezultatas

 „HashMap“: (1 = Java, 2 = Python, 3 = JavaScript) Raktai: (1, 2, 3) Reikšmės: („Java“, „Python“, „JavaScript“) Raktų / reikšmių susiejimai: (1 = Java, 2 = Python, 3 = JavaScript )

Ankstesniame pavyzdyje mes sukūrėme hashmap pavadintas kalbomis. Čia mes prieiname raktus , reikšmes ir raktų / reikšmių susiejimus iš hashmap.

Rekomenduojami skaitiniai

  • „Java HashMap get“ ()
  • „Java Hashmap getOrDefault“ ()
  • „Java HashMap“ raktų rinkinys ()
  • „Java HashMap“ vertės ()
  • „Java HashMap entrySet“ ()

3. Pakeiskite „HashMap Value“

Mes galime naudoti replace()metodą, norėdami pakeisti reikšmę, susietą su raktu hashmap'e. Pavyzdžiui,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("Original HashMap: " + languages); // change element with key 2 languages.replace(2, "C++"); System.out.println("HashMap using replace(): " + languages); ) )

Rezultatas

 Originalus „HashMap“: (1 = „Java“, 2 = „Python“, 3 = „JavaScript“) „HashMap“ naudojant „pakeisti“ (): (1 = „Java“, 2 = C ++, 3 = „JavaScript“)

Ankstesniame pavyzdyje mes sukūrėme hashmap pavadintas kalbomis. Atkreipkite dėmesį į išraišką,

 languages.replace(2, "C++");

Čia mes pakeičiame 2 rakte nurodytą vertę nauja C ++ reikšme.

HashMapKlasę taip pat pateikiama keletas variantų replace()metodas. Norėdami sužinoti daugiau, apsilankykite

  • „Java HashMap“ pakeisti ()
  • „Java HashMap“ pakeiskite viską ()

4. Pašalinkite „HashMap Elements“

Norėdami pašalinti elementus iš hashmap, galime naudoti metodą remove (). Pavyzdžiui,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // remove element associated with key 2 String value = languages.remove(2); System.out.println("Removed value: " + value); System.out.println("Updated HashMap: " + languages); ) )

Rezultatas

 „HashMap“: (1 = Java, 2 = Python, 3 = JavaScript) Pašalinta reikšmė: Python Atnaujinta HashMap: (1 = Java, 3 = JavaScript)

Čia remove()metodas naudoja raktą kaip savo parametrą. Tada jis grąžina su raktu susietą vertę ir pašalina įrašą .

Mes taip pat galime pašalinti įrašą tik esant tam tikroms sąlygoms. Pavyzdžiui,

 remove(2, "C++");

Here, the remove() method only removes the entry if the key 2 is associated with the value C++. Since 2 is not associated with C++, it doesn't remove the entry.

To learn more, visit Java HashMap remove().

Other Methods of HashMap

Method Description
clear() removes all mappings from the HashMap
compute() computes a new value for the specified key
computeIfAbsent() computes value if a mapping for the key is not present
computeIfPresent() computes a value for mapping if the key is present
merge() merges the specified mapping to the HashMap
clone() makes the copy of the HashMap
containsKey() checks if the specified key is present in Hashmap
containsValue() checks if Hashmap contains the specified value
size() returns the number of items in HashMap
isEmpty() checks if the Hashmap is empty

Iterate through a HashMap

To iterate through each entry of the hashmap, we can use Java for-each loop. We can iterate through keys only, vales only, and key/value mapping. For example,

 import java.util.HashMap; import java.util.Map.Entry; class Main ( public static void main(String() args) ( // create a HashMap HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // iterate through keys only System.out.print("Keys: "); for (Integer key : languages.keySet()) ( System.out.print(key); System.out.print(", "); ) // iterate through values only System.out.print("Values: "); for (String value : languages.values()) ( System.out.print(value); System.out.print(", "); ) // iterate through key/value entries System.out.print("Entries: "); for (Entry entry : languages.entrySet()) ( System.out.print(entry); System.out.print(", "); ) ) )

Output

 HashMap: (1=Java, 2=Python, 3=JavaScript) Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,

Note that we have used the Map.Entry in the above example. It is the nested class of the Map interface that returns a view (elements) of the map.

We first need to import the java.util.Map.Entry package in order to use this class.

This nested class returns a view (elements) of the map.

Creating HashMap from Other Maps

In Java, we can also create a hashmap from other maps. For example,

 import java.util.HashMap; import java.util.TreeMap; class Main ( public static void main(String() args) ( // create a treemap TreeMap evenNumbers = new TreeMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("TreeMap: " + evenNumbers); // create hashmap from the treemap HashMap numbers = new HashMap(evenNumbers); numbers.put("Three", 3); System.out.println("HashMap: " + numbers); ) )

Output

 TreeMap: (Four=4, Two=2) HashMap: (Two=2, Three=3, Four=4)

In the above example, we have created a TreeMap named evenNumbers. Notice the expression,

 numbers = new HashMap(evenNumbers)

Here, we are creating a HashMap named numbers using the TreeMap. To learn more about treemap, visit Java TreeMap.

Note: While creating a hashmap, we can include optional parameters: capacity and load factor. For example,

 HashMap numbers = new HashMap(8, 0.6f);

Here,

  • 8 (capacity is 8) - This means it can store 8 entries.
  • 0.6f (load factor is 0.6) - This means whenever our hash table is filled by 60%, the entries are moved to a new hash table double the size of the original hash table.

Jei pasirinktiniai parametrai nenaudojami, numatytasis pajėgumas bus 16, o numatytasis apkrovos koeficientas bus 0,75 .

Įdomios straipsniai...