logo

ההבדל בין מחלקת HashSet ל-HashMap ב-Java

ה מפת גיבוב ו HashSet ב-Java הם שיעורי האוסף הפופולריים ביותר. שניהם משמשים למבנה הנתונים. הטבלה הבאה מתארת ​​את ההבדל בין HashMap ל- HashSet:

בָּסִיס מפת גיבוב HashSet
הַגדָרָה Java HashMap הוא יישום מבוסס טבלת גיבוב של ממשק מפה. HashSet הוא סט. זה יוצר אוסף המשתמש בטבלת hash לאחסון.
יישום HashMap מיישמת מפה, ניתן לשכפול וניתן להסדרה ממשק es. HashSet מיישם סט, ניתן לשכפול, ניתן לסידרה, ניתן לחזרה ו אוסף ממשקים.
חנויות ב-HashMap אנו מאחסנים א צמד מפתח-ערך . זה שומר על מיפוי של מפתח וערך. ב-HashSet, אנו מאחסנים חפצים .
ערכים כפולים זה לא מאפשר שכפול מפתחות , אבל ערכים כפולים הם מוּתָר . זה לא מאפשר ערכים כפולים .
ערכים אפסים זה יכול להכיל א מפתח null יחיד ו ערכי null מרובים . זה יכול להכיל ערך ריק בודד .
שיטת ההחדרה HashMap משתמש ב- לָשִׂים() שיטה להוספת האלמנטים ב-HashMap. HashSet משתמש ב- לְהוֹסִיף() שיטה להוספת אלמנטים ב-HashSet.
ביצועים HashMap הוא מהיר יותר/ מאשר HashSet מכיוון שערכים משויכים למפתח ייחודי. HashSet הוא איטי יותר מאשר HashMap מכיוון שאובייקט האיבר משמש לחישוב ערך hashcode, שיכול להיות זהה עבור שני אובייקטים.
מספר החפצים רק אחד האובייקט נוצר במהלך פעולת ההוספה. יש שתיים אובייקטים שנוצרו במהלך פעולת put, אחד עבור מַפְתֵחַ ואחד עבור ערך .
מנגנון אחסון HashMap משתמש פנימי hashing לאחסן חפצים. HashSet משתמש באופן פנימי ב- a מפת גיבוב חפץ לאחסון חפצים.
שימושים העדיפו תמיד כשאנחנו לא שומרים על ייחודיות . הוא משמש כאשר אנו צריכים לשמור על ייחודיות של מידע.
דוגמא {a->4, b->9, c->5} איפה א ב ג הם מפתחות ו 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 והערך null מאוחסן פעם אחת בלבד.

 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