12
ทำไม hashCode ของ Java () ใน String ใช้ 31 เป็นตัวคูณ
สำหรับเอกสารคู่มือ Java รหัสแฮชสำหรับStringวัตถุนั้นคำนวณเป็น: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] การใช้intเลขคณิตโดยที่s[i]เป็น ตัวอักษรที่iของสตริงnคือความยาวของสตริงและ^บ่งชี้การยกกำลัง ทำไม 31 ถูกใช้เป็นตัวคูณ ฉันเข้าใจว่าตัวคูณควรเป็นจำนวนเฉพาะที่ค่อนข้างใหญ่ ดังนั้นทำไมไม่ 29 หรือ 37 หรือ 97