hashcode 主要是返回一个int值 其实核心在于他对于这个hash值怎么得来的算法才是难以理解的 但是给一个算法 照着写还是蛮容易的
比如怎么去计算这个hashcode
规定:s[0] 表示第一位字符
n表示字符串的长度
那么 (s[0]+ s[1] + s[2] + s[3]+ s[n-1])*23. 这一个表达式就是求hashcode 的算法 —— 也就是已经设计好 只需读懂他的意思照着码 就行 但是难懂的是为什么要去定义一个这样的表达式 逐渐认识到 自己还只是个coder 不是个designer …
代码示例:
import java.util.*;
public class Test_ {
public static void main(String[] args) {
Test_ sd=new Test_();
for (int i = 1; i <=100; i++) {
String st=sd.randomString();
System.out.println("第"+i+"个字符串是"+st+"它的的哈希值是:"+sd.hashcode(st));
}
}
public static String randomString()
{
String st1="";
String st="";
int h=(int)(Math.random()*10)+2;
System.out.println("这次的随机值:"+h);
for (short i = 20; i < 126; i++) {
char ch=(char)i;
String st2=Character.toString(ch);
st1+=st2;
}
if(h>=2&&h<=8)
{
for (int i = 0; i < h; i++) {
int h1=(int)(Math.random()*100);
String st3=Character.toString(st1.charAt(h1));
st+=st3;
}
}
return st;
}
public static int hashcode(String str)
{
int n=str.length();
char ch;
int n1=0;
if(n==0)
return 0;
else {
for (int i = 0; i < n; i++) {
ch=str.charAt(i);
n1+=ch;
}
if(n1*23<0)
{
if(-n1*23>1999)
{
return (-n1*23)%2000;
}
return -n1*23;
}
else if(n1*23>1999)
{
return n1*23%2000;
}
else
{
return n1*23;
}
}
}
}
代码挺简单的 易懂



