สิ่งแรกที่คุณต้องรู้คือ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?