将javascript哈希函数复制到java/kotlin

将javascript哈希函数复制到java/kotlin,javascript,java,android,hash,kotlin,Javascript,Java,Android,Hash,Kotlin,我正在开发一个多平台应用程序,我已经完成了数据库和web版本。为了检查web版本上的代码,我从数据库中获取了一个哈希版本,并比较了两者。我使用此javascript代码进行散列(我在上找到此代码): 如果您关心获取散列代码,而不是自己将javascript函数复制到kotlin中,我建议您可以使用这一行程序 val s:String = "aaaa"; println(s.hashCode()); 输出为2986048 我用javascript版本检查过了,它是一样的 下面

我正在开发一个多平台应用程序,我已经完成了数据库和web版本。为了检查web版本上的代码,我从数据库中获取了一个哈希版本,并比较了两者。我使用此javascript代码进行散列(我在上找到此代码):


如果您关心获取散列代码,而不是自己将javascript函数复制到kotlin中,我建议您可以使用这一行程序

val s:String = "aaaa";
println(s.hashCode());
输出为2986048

我用javascript版本检查过了,它是一样的

下面是kotlin中hashCode的

open fun hashCode():Int(源代码)

返回对象的哈希代码值。hashCode的总合同为:

只要在同一对象上多次调用hashCode方法,hashCode方法必须始终返回相同的整数,前提是不修改在对象上的equals比较中使用的信息

如果根据equals()方法两个对象相等,那么对两个对象中的每个对象调用hashCode方法必须产生相同的整数结果


当然,这是一个用Java编写的简单方法。你试过什么?(请不要将我们视为“免费编写代码”服务!)@StephenC我没有添加我所拥有的内容,因为它可能是非常糟糕的代码,而且不起作用。但是我现在加上了。哇,伙计,它起作用了!javascript版本是否如此基本和常见,kotlin将其内置为hashCode()?@RobinAndernoord我认为哈希函数是基本的,每种语言都应该有某种实现。不过,最好在自己实施之前检查文档:-)
   fun go (a: Int, b: String): Int {
    var a = ((a shl 5) - a) + Character.codePointAt(b,0);
    return a and a
} // this part doesn't give any errors now.


fun hashCode(s: String): String {
    return s.split("").reduce(go(a,b)) // I don't know what to pass as parameters + reduce gives an error
}
val s:String = "aaaa";
println(s.hashCode());