Mengapa 31 Digunakan sebagai Pengganda dalam Kaedah hashCode() Java untuk Strings?
Dokumentasi Java menentukan pengiraan objek String kod cincang seperti berikut:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
di mana s[i] ialah aksara ke-i rentetan, n ialah panjang rentetan, dan ^ mewakili eksponen. Formula ini menggabungkan pengganda tetap 31.
Rasional Penggunaan 31 sebagai Pengganda
Menurut karya terkenal Joshua Bloch, "Effective Java," pilihan 31 kerana pengganda terletak pada beberapa faktor:
Atas ialah kandungan terperinci Mengapakah `hashCode()` Java untuk Strings Menggunakan 31 sebagai Pengganda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!