The HashMap a HashSet v Javě jsou nejoblíbenější třídy Collection. Oba se používají pro datovou strukturu. Následující tabulka popisuje rozdíl mezi HashMap a HashSet:
Základ | HashMap | HashSet |
---|---|---|
Definice | Java HashMap je implementace rozhraní Map založená na hashovací tabulce. | HashSet je sada. Vytvoří kolekci, která používá k ukládání hash tabulku. |
Implementace | implementuje HashMap Mapovat, klonovat a serializovat rozhraní es. | HashSet implementuje Set, klonovatelný, serializovatelný, iterovatelný a Sbírka rozhraní. |
Obchody | V HashMap ukládáme a pár klíč-hodnota . Udržuje mapování klíče a hodnoty. | V HashSet ukládáme objektů . |
Duplicitní hodnoty | to nedovoluje duplicitní klíče , ale duplicitní hodnoty jsou povoleno . | to nedovoluje duplicitní hodnoty . |
Nulové hodnoty | Může obsahovat a jediný nulový klíč a více hodnot null . | Může obsahovat jediná nulová hodnota . |
Způsob vkládání | HashMap používá dát() metoda pro přidání prvků do HashMap. | HashSet používá přidat() metoda pro přidání prvků do HashSet. |
Výkon | HashMap je rychlejší/ než HashSet, protože hodnoty jsou spojeny s jedinečným klíčem. | HashSet je pomalejší než HashMap, protože členský objekt se používá pro výpočet hodnoty hashcode, která může být stejná pro dva objekty. |
Počet objektů | Pouze jeden objekt je vytvořen během operace přidání. | Existují dva objekty vytvořené během operace put, jeden pro klíč a jeden pro hodnota . |
Skladovací mechanismus | HashMap interně používá hašování k ukládání předmětů. | HashSet interně používá a HashMap objekt k uložení předmětů. |
Použití | Vždy preferujte, když neudržujeme jedinečnost . | Používá se, když potřebujeme udržovat jedinečnost dat. |
Příklad | {a->4, b->9, c->5}{101} Kde a, b, c jsou klíče a 4, 9, 5 jsou hodnoty spojené s klíčem. | {6, 43, 2, 90, 4} Označuje sadu. |
Pojďme pochopit rozdíly prostřednictvím programů.
Příklad HashMap
Když v následujícím příkladu přidáme duplicitní prvek se stejným klíčem a jinou hodnotou, předchozí hodnota klíče je nahrazena novou hodnotou.
Když přidáme duplicitní prvek se stejným klíčem a stejnou hodnotou, pak se pár klíč-hodnota podruhé neuloží.
import java.util.*; public class HashMapExample { public static void main(String args[]) { //creating object of HashMap HashMap hm= new HashMap(); //adding key-value pair hm.put('John', 23); hm.put('Monty', 27 ); hm.put('Richard', 21); hm.put('Devid', 19); System.out.println('Before adding duplicate keys: '); System.out.println(hm); //adding duplicate keys hm.put('Monty', 25); //replace the Monty's previous age hm.put('Devid', 19); System.out.println('After adding duplicate keys: '); System.out.println(hm); } }
Výstup:
Příklad HashSet
V následujícím příkladu vidíme, že duplicitní hodnoty se neukládají do HashSet a nulová hodnota se ukládá pouze jednou.
import java.util.*; public class HashSetExample { public static void main(String args[]) { //creating object of HashSet HashSet hs= new HashSet(); //adding values to HashSet hs.add('Java'); hs.add('Python'); hs.add('C++'); hs.add('C'); System.out.println('Before adding duplicate and null values: '); System.out.println(hs); //adding duplicate values hs.add('Python'); hs.add('C'); System.out.println('After adding duplicate values: '); System.out.println(hs); //adding null values hs.add(null); hs.add(null); System.out.println('After adding null values: '); System.out.println(hs); } }
Výstup: