ฟังก์ชัน 'hashCode' ใช้เพื่อรับรหัสแฮชของวัตถุใน Java นี่คืออ็อบเจ็กต์ของ super class Object ส่งคืนหน่วยความจำอ้างอิงวัตถุเป็นจำนวนเต็ม เป็นฟังก์ชันแบบเนทีฟ ซึ่งหมายความว่าไม่สามารถใช้เมธอดโดยตรงใน Java เพื่อดึงข้อมูลอ้างอิงของอ็อบเจ็กต์ได้
เพื่อประสิทธิภาพที่ดีขึ้นของ HashMap ให้ใช้ hashCode() อย่างถูกต้อง โดยทั่วไป ฟังก์ชันนี้จะใช้ในการคำนวณค่าที่ฝากข้อมูลและดัชนี กำหนดไว้ดังนี้ −
public native hashCode()
เนื่องจากเราได้กล่าวถึง 'ถัง' สิ่งสำคัญคือต้องเข้าใจว่ามันหมายถึงอะไร เป็นองค์ประกอบที่ใช้เก็บโหนด สามารถมีได้มากกว่าหนึ่งโหนดในที่ฝากข้อมูลเดียว โหนดสามารถเชื่อมต่อได้โดยใช้โครงสร้างข้อมูลรายการที่เชื่อมโยง ความจุของแฮชแมปสามารถคำนวณได้โดยใช้บัคเก็ตและตัวประกอบการโหลด
Capacity = number of buckets * load factor
ฟังก์ชัน 'เท่ากับ' ใช้เพื่อตรวจสอบความเท่าเทียมกันระหว่างสองวัตถุ มันยังได้รับจาก super class Object ฟังก์ชันนี้สามารถแทนที่ได้ในคลาสที่กำหนดเองโดยจัดเตรียมการใช้งานที่กำหนดเอง ฟังก์ชันนี้จะคืนค่าเป็นจริงหรือเท็จขึ้นอยู่กับว่าวัตถุทั้งสองในคำถามมีค่าเท่ากันหรือไม่
ค่าดัชนีถูกสร้างขึ้นเพื่อให้ขนาดของอาร์เรย์ไม่ใหญ่ ดังนั้นจึงหลีกเลี่ยง outOfMemoryException สูตรการหาดัชนีของอาร์เรย์คือ −
Index = hashCode(key) & (n-1) – Here n refers to number of buckets.
เรามาดูตัวอย่างกัน −
ตัวอย่าง
import java.util.HashMap; class hash_map{ String key; hash_map(String key){ this.key = key; } @Override public int hashCode(){ int hash = (int)key.charAt(0); System.out.println("The hash code for key : " + key + " = " + hash); return hash; } @Override public boolean equals(Object obj){ return key.equals(((hash_map)obj).key); } } public class Demo{ public static void main(String[] args){ HashMap my_map = new HashMap(); my_map.put(new hash_map("This"), 15); my_map.put(new hash_map("is"), 35); my_map.put(new hash_map("a"), 26); my_map.put(new hash_map("sample"), 45); System.out.println("The value for key 'this' is : " + my_map.get(new hash_map("This"))); System.out.println("The value for key 'is' is: " + my_map.get(new hash_map("is"))); System.out.println("The value for key 'a' is: " + my_map.get(new hash_map("a"))); System.out.println("The value for key 'sample' is: " + my_map.get(new hash_map("sample"))); } }
ผลลัพธ์
The hash code for key : This = 84 The hash code for key : is = 105 The hash code for key : a = 97 The hash code for key : sample = 115 The hash code for key : This = 84 The value for key 'this' is : 15 The hash code for key : is = 105 The value for key 'is' is: 35 The hash code for key : a = 97 The value for key 'a' is: 26 The hash code for key : sample = 115 The value for key 'sample' is: 45
คลาสชื่อ 'hash_map' กำหนดสตริงและตัวสร้าง สิ่งนี้ถูกแทนที่โดยฟังก์ชันอื่นที่ชื่อว่า 'hashCode' ที่นี่ ค่าคีย์ของ hashmap จะถูกแปลงเป็นจำนวนเต็มและพิมพ์รหัสแฮช ถัดไป ฟังก์ชัน 'เท่ากับ' จะถูกแทนที่และตรวจสอบว่าคีย์นั้นเท่ากับคีย์ของแฮชแมปหรือไม่ คลาสสาธิตกำหนดฟังก์ชันหลักที่สร้างอินสแตนซ์ใหม่ของ HashMap องค์ประกอบถูกเพิ่มเข้าไปในโครงสร้างนี้โดยใช้ฟังก์ชัน 'put' และพิมพ์บนคอนโซล