Diferența dintre HashSet și HashMap

În acest articol vom discuta despre diferențele dintre clasele HashSet și HashMap.

HashSet vs HashMap

Diferențe:

HashSet HashMap
Clasa HashSet implementează interfața Set Clasa HashMap implementează interfața Map
În HashSet se stochează obiecte (elemente sau valori) e.g. Dacă avem un HashSet de elemente de tip șir de caractere, atunci acesta ar putea reprezenta un set de elemente HashSet: {„Hello”, „Hi”, „Bye”, „Run”} HashMap este utilizat pentru stocarea perechilor cheie &valoare. Pe scurt, menține corespondența dintre cheia & valoare (Clasa HashMap este aproximativ echivalentă cu Hashtable, cu excepția faptului că este nesincronizată și permite valori nule). Acesta este modul în care ați putea reprezenta elementele HashMap în cazul în care are o cheie de tip întreg și o valoare de tip String: de ex. {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”}
HashSet nu permite elemente duplicate, ceea ce înseamnă că nu se pot stoca valori duplicate în HashSet. HashMap nu permite chei duplicate, însă permite valori duplicate.
HashSet permite să aibă o singură valoare nulă. HashMap permite o singură cheie nulă și orice număr de valori nule.

Similitudini:
1) Atât HashMap, cât și HashSet nu sunt sincronizate, ceea ce înseamnă că nu sunt potrivite pentru operații thread-safe decât dacă sunt sincronizate explicit. Iată cum le puteți sincroniza în mod explicit:
HashSet:

Set s = Collections.synchronizedSet(new HashSet(...));

HashMap:

 Map m = Collections.synchronizedMap(new HashMap(...));

2) Ambele clase nu garantează că ordinea elementelor lor va rămâne constantă în timp.

3) Dacă vă uitați la codul sursă al lui HashSet, atunci este posibil să descoperiți că acesta este susținut de un HashMap. Deci, practic, acesta utilizează în mod intern un HashMap pentru toate operațiile sale.

4) Ambele oferă performanțe în timp constant pentru operațiile de bază, cum ar fi adăugarea, eliminarea de elemente etc.

HashSet exemplu

import java.util.HashSet;class HashSetDemo{ public static void main(String args) { // Create a HashSet HashSet<String> hset = new HashSet<String>(); //add elements to HashSet hset.add("AA"); hset.add("BB"); hset.add("CC"); hset.add("DD"); // Displaying HashSet elements System.out.println("HashSet contains: "); for(String temp : hset){ System.out.println(temp); } }}

Output:

HashSet contains: AABBCCDD

HashMap exemplu

import java.util.HashMap;class HashMapDemo{ public static void main(String args) { // Create a HashMap HashMap<Integer, String> hmap = new HashMap<Integer, String>(); //add elements to HashMap hmap.put(1, "AA"); hmap.put(2, "BB"); hmap.put(3, "CC"); hmap.put(4, "DD"); // Displaying HashMap elements System.out.println("HashMap contains: "+hmap); }}

Output:

HashMap contains: {1=AA, 2=BB, 3=CC, 4=DD}

.

Leave a Reply