数码资讯
编码算法的javahashCodeJavascript兼容共享
在java中,一个hashCode算法可以用来计算一个字符串的哈希值。今天一个朋友突然问我是否可以计算hashCode JS,这需要相同的结果作为java hashCode计算。 对于java的hashCode,它还不知道它的算法,直到现在,但是它不应该太难猜。所以现在java写的代码测试。 运行结
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
在java中,一个hashCode算法可以用来计算一个字符串的哈希值。今天一个朋友突然问我是否可以计算hashCode JS,这需要相同的结果作为java hashCode计算。
对于java的hashCode,它还不知道它的算法,直到现在,但是它不应该太难猜。所以现在java写的代码测试。
运行结果:899755
按Ctrl键并点击hashCode方法的名字看算法,并发现它是一个非常简单的代码,如下所示:
复制代码代码如下所示:
public int hashCode(){
散列;
如果(h=0){
整数=偏移量;
char值;
int =计数;
对于(int = i 0;i < i;i + +){
h=31;
}
散列=h;
}
返回H;
}
这很好,只需将过去移植到js中就可以了:
复制代码代码如下所示:
函数hashCode(STR){
var = 0,关闭= 0;
VaR len = str.length;
对于(var i = 0;i < i;i + +){
H = 31×H + str.charcodeat(下+ +);
}
返回H;
}
警报(hashCode('shenyang '));
运行结果:899755
好吧,作为java计算结果相同。我认为这是做的,然后我想找一个系列的测试。
沈阳,沈阳,运行的结果:在java 1062711668,但JS,26832515444。
匡云,这只是一个尝试,是一个问题!思考片刻后,它突然想到在java中的长度是21亿左右,并没有限制在JS。这个问题应该在这里,所以一点小小的改变以前的方法:
复制代码代码如下所示:
函数hashCode(STR){
var = 0,关闭= 0;
VaR len = str.length;
对于(var i = 0;i < i;i + +){
H = 31×H + str.charcodeat(下+ +);
}
var T = 2147483648 * 2;
当(h = 2147483647){
h=T
}
返回H;
}
警报(hashCode('shenyang沈阳啊));
再次测试!好啊!完成 u3002no技术含量,一点总结
2013-02-19更新,上面的效率相对较低,当内容很长,下面的代码优化的代码:
复制代码代码如下所示:
函数hashCode(STR){
var=0;
VaR len = str.length;
var = 2147483648;
对于(var i = 0;i < i;i + +){
H = 31×H + str.charcodeat(我);
如果(H > 2147483647)H = t; / / java整型溢出模型
}
* var = 2147483648 * 2;
当(h = 2147483647){
H = T
}
返回H;
}
警报(hashCode(c #同时n个线程并发执行,其他地方如何在队列实现)); / / 1107373715
对于java的hashCode,它还不知道它的算法,直到现在,但是它不应该太难猜。所以现在java写的代码测试。
运行结果:899755
按Ctrl键并点击hashCode方法的名字看算法,并发现它是一个非常简单的代码,如下所示:
复制代码代码如下所示:
public int hashCode(){
散列;
如果(h=0){
整数=偏移量;
char值;
int =计数;
对于(int = i 0;i < i;i + +){
h=31;
}
散列=h;
}
返回H;
}
这很好,只需将过去移植到js中就可以了:
复制代码代码如下所示:
函数hashCode(STR){
var = 0,关闭= 0;
VaR len = str.length;
对于(var i = 0;i < i;i + +){
H = 31×H + str.charcodeat(下+ +);
}
返回H;
}
警报(hashCode('shenyang '));
运行结果:899755
好吧,作为java计算结果相同。我认为这是做的,然后我想找一个系列的测试。
沈阳,沈阳,运行的结果:在java 1062711668,但JS,26832515444。
匡云,这只是一个尝试,是一个问题!思考片刻后,它突然想到在java中的长度是21亿左右,并没有限制在JS。这个问题应该在这里,所以一点小小的改变以前的方法:
复制代码代码如下所示:
函数hashCode(STR){
var = 0,关闭= 0;
VaR len = str.length;
对于(var i = 0;i < i;i + +){
H = 31×H + str.charcodeat(下+ +);
}
var T = 2147483648 * 2;
当(h = 2147483647){
h=T
}
返回H;
}
警报(hashCode('shenyang沈阳啊));
再次测试!好啊!完成 u3002no技术含量,一点总结
2013-02-19更新,上面的效率相对较低,当内容很长,下面的代码优化的代码:
复制代码代码如下所示:
函数hashCode(STR){
var=0;
VaR len = str.length;
var = 2147483648;
对于(var i = 0;i < i;i + +){
H = 31×H + str.charcodeat(我);
如果(H > 2147483647)H = t; / / java整型溢出模型
}
* var = 2147483648 * 2;
当(h = 2147483647){
H = T
}
返回H;
}
警报(hashCode(c #同时n个线程并发执行,其他地方如何在队列实现)); / / 1107373715
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。