java เขียนทับ hashcode เสมอเมื่อการเขียนทับเท่ากับ
เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้ความรู้พื้นฐานของ Java เมื่อฉันพบ Java ที่ครอบคลุมเท่ากับฉันมักจะมีคำถามมากมายเมื่อฉันต้องเขียนทับ HashCode หลังจากพูดคุยโดยตรงกับเพื่อนร่วมงานของฉันและสอบถามข้อมูลออนไลน์ฉันจะจัดเรียงที่นี่เพื่อช่วยให้ทุกคนเข้าใจและมีคำแนะนำในรหัส
รหัสการใช้งานเฉพาะ:
แพ็คเกจ cn.xf.cp.ch02.item9; นำเข้า java.util.hashmap; นำเข้า java.util.map; phonenumber ระดับสาธารณะ คำนำหน้าสั้นส่วนตัวสุดท้าย; ผ้าลินินสั้น ๆ สุดท้าย phonenumber สาธารณะ (int arearecode, คำนำหน้า int, int linenumber) {RangeCheck (leaxcode, 999, "รหัสพื้นที่"); Rangecheck (คำนำหน้า, 999, "คำนำหน้า"); Rangecheck (Linenumber, 9999, "หมายเลขบรรทัด"); this.areAcode = (สั้น) รหัสพื้นที่; this.prefix = (สั้น) คำนำหน้า; this.linenumber = (สั้น) ผ้าลินิน; } โมฆะคงที่ส่วนตัว RangeCheck (int arg, int max, ชื่อสตริง) {ถ้า (arg <0 || arg> max) โยน unlegalargumentException ใหม่ (ชื่อ + ":" + arg); } @Override บูลีนสาธารณะเท่ากับ (Object O) {ถ้า (o == สิ่งนี้) คืนค่าจริง; if (! (o อินสแตนซ์ของ phonenumber)) กลับเท็จ; Phonenumber pn = (phonenumber) o; return pn.linenumber == linenumber && pn.prefix == คำนำหน้า && pn.areacode == areampode; } /* @Override // สำหรับสาเหตุที่ใช้ 31 นี่คือค่าที่แนะนำ การศึกษาแสดงให้เห็นว่าตัวเลขนี้ทำงานได้ดีขึ้นเมื่อใช้ hashCode int สาธารณะ () {int result = 17; ผลลัพธ์ = 31 * ผลลัพธ์ + areaCode; ผลลัพธ์ = 31 * ผลลัพธ์ + คำนำหน้า; ผลลัพธ์ = 31 * ผลลัพธ์ + ผ้าลินิน; ผลการกลับมา; } */// หากวัตถุไม่เปลี่ยนแปลงบ่อยและมีค่าใช้จ่ายสูงคุณควรพิจารณาแคชรหัสแฮชภายในวัตถุ // ตัวแปรที่แก้ไขด้วยความผันผวนเธรดจะอ่านค่าที่ปรับเปลี่ยนมากที่สุดของตัวแปรทุกครั้งที่ใช้ตัวแปร HashCode Int ที่มีความผันผวนส่วนตัว; @Override public int hashCode () {int result = hashCode; if (result == 0) {result = 17; ผลลัพธ์ = 31 * ผลลัพธ์ + areaCode; ผลลัพธ์ = 31 * ผลลัพธ์ + คำนำหน้า; ผลลัพธ์ = 31 * ผลลัพธ์ + ผ้าลินิน; hashCode = ผลลัพธ์; } ผลตอบแทนผลลัพธ์; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {แผนที่ <phonenumber, string> m = new hashmap <phonenumber, string> (); M.PUT (ใหม่ Phonenumber (707, 867, 5309), "Jenny"); // เจนนี่จะไม่ถูกส่งคืนที่นี่มันจะส่งคืนค่า NULL เพราะพวกเขาวางวัตถุในระบบแฮชแฮชที่แตกต่างกัน. -ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!