logo

Разлика между HashSet и HashMap клас в Java

The HashMap и HashSet в Java са най-популярните класове Collection. И двете се използват за структурата на данните. Следната таблица описва разликата между HashMap и HashSet:

Основа HashMap HashSet
Определение Java HashMap е базирана на хеш таблица имплементация на Map интерфейс. HashSet е набор. Той създава колекция, която използва хеш таблица за съхранение.
Внедряване HashMap прилага Карта, възможност за клониране и сериализиране интерфейс es. HashSet прилага Set, Cloneable, Serializable, Iterable и колекция интерфейси.
Магазини В HashMap съхраняваме a двойка ключ-стойност . Той поддържа картографирането на ключ и стойност. В HashSet съхраняваме обекти .
Дублирани стойности Не позволява дублирани ключове , но дублирани стойности са позволен . Не позволява дублирани стойности .
Нулеви стойности Може да съдържа a единичен нулев ключ и множество нулеви стойности . Може да съдържа една единствена нулева стойност .
Метод на вмъкване HashMap използва слагам() метод за добавяне на елементите в HashMap. HashSet използва добави () метод за добавяне на елементи в HashSet.
производителност HashMap е по-бързо/ отколкото HashSet, защото стойностите са свързани с уникален ключ. HashSet е по-бавно отколкото HashMap, тъй като обектът-член се използва за изчисляване на стойност на хешкод, която може да бъде еднаква за два обекта.
Броят на обектите само един обектът се създава по време на операцията за добавяне. Има две обекти, създадени по време на пусната експлоатация, един за ключ и един за стойност .
Механизъм за съхранение HashMap вътрешно използва хеширане за съхраняване на предмети. HashSet вътрешно използва a HashMap обект за съхраняване на обекти.
Употреби Винаги предпочитаме, когато не поддържаме уникалност . Използва се, когато трябва да поддържаме уникалност на данни.
Пример {a->4, b->9, c->5} Където a, b, c са ключове и 4, 9, 5 са стойности свързан с ключ. {6, 43, 2, 90, 4} Означава набор.

Нека разберем разликите чрез програмите.

Пример за HashMap

В следващия пример, когато добавим дублиран елемент със същия ключ и различна стойност, предишната стойност на ключа се заменя с новата стойност.

Когато добавим дублиран елемент със същия ключ и същата стойност, тогава двойката ключ-стойност не се съхранява втори път.

 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); } } 

Изход:

Разлика между HashSet и HashMap клас в Java

Пример за HashSet

В следващия пример можем да видим, че дублиращите се стойности не се съхраняват в HashSet и нулевата стойност се съхранява само веднъж.

 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); } } 

Изход:

Разлика между HashSet и HashMap клас в Java