สิ่งแรกที่คุณต้องรู้คือHashSet
ทำหน้าที่เหมือน a Set
ซึ่งหมายความว่าคุณเพิ่มวัตถุของคุณลงในโดยตรงHashSet
และไม่สามารถมีรายการที่ซ้ำกันได้ HashSet
คุณเพียงแค่เพิ่มมูลค่าของคุณโดยตรงใน
อย่างไรก็ตามHashMap
เป็นMap
ประเภท นั่นหมายความว่าทุกครั้งที่คุณเพิ่มรายการคุณจะต้องเพิ่มคู่คีย์ - ค่า
ในHashMap
คุณสามารถมีค่าที่ซ้ำกันได้ แต่ต้องไม่ทำซ้ำคีย์ ในHashMap
รายการใหม่จะแทนที่รายการเก่า รายการล่าสุดจะอยู่ในไฟล์HashMap
.
การทำความเข้าใจการเชื่อมโยงระหว่าง HashMap และ HashSet:
จำไว้ว่าHashMap
ไม่สามารถมีคีย์ที่ซ้ำกันได้ เบื้องหลังHashSet
ใช้ไฟล์HashMap
.
เมื่อคุณพยายามที่จะเพิ่มวัตถุใด ๆ ลงในHashSet
รายการนี้จะถูกจัดเก็บจริงเป็นกุญแจสำคัญในการHashMap
- เดียวกันที่ใช้อยู่เบื้องหลังฉากHashMap
HashSet
เนื่องจากพื้นฐานนี้HashMap
ต้องการคู่คีย์ - ค่าเราจึงสร้างค่าดัมมี่ให้เรา
ตอนนี้เมื่อคุณพยายามแทรกวัตถุที่ซ้ำกันอื่นเข้าไปในวัตถุเดียวกันHashSet
อีกครั้งจะพยายามแทรกเป็นกุญแจในการHashMap
โกหกที่อยู่ด้านล่าง อย่างไรก็ตามHashMap
ไม่สนับสนุนรายการที่ซ้ำกัน ดังนั้นHashSet
จะยังคงส่งผลให้มีค่าประเภทนั้นเพียงค่าเดียว หมายเหตุด้านข้างสำหรับทุกคีย์ที่ซ้ำกันเนื่องจากค่าที่สร้างขึ้นสำหรับรายการของเราใน HashSet เป็นค่าสุ่ม / ดัมมี่คีย์จะไม่ถูกแทนที่เลย มันจะถูกละเว้นเมื่อลบคีย์และเพิ่มคีย์เดียวกันกลับเข้าไป (ค่าดัมมี่เหมือนกัน) จะไม่สมเหตุสมผลเลย
สรุป:
HashMap
อนุญาตให้ทำซ้ำvalues
แต่ไม่keys
อนุญาต
HashSet
ไม่สามารถมีรายการที่ซ้ำกัน
หากต้องการเล่นว่าการเพิ่มวัตถุสำเร็จหรือไม่คุณสามารถตรวจสอบboolean
ค่าที่ส่งคืนเมื่อคุณเรียกใช้.add()
และดูว่าส่งคืนtrue
หรือfalse
ไม่ ถ้ามันกลับมาแสดงtrue
ว่ามันถูกแทรก
HashMap
เพื่อดูว่าkey
มีอยู่แล้วก่อนที่จะเรียกput
ในการสนับสนุนmap
?