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
В следващия пример можем да видим, че дублиращите се стойности не се съхраняват в 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); } }
Изход: