相关疑难解决方法(0)

与顺序无关的哈希算法

我目前正在为自定义编程语言开发一个集合库.我已经有了几种数据类型(Collection,List,Map,Set)和它们的实现(可变和不可变),但到目前为止我所缺少的是hashCodeequals.虽然列表没有问题,因为它们是有序集合,但它们对集合和地图起着特殊的作用.如果两个集合具有相同的大小和相同的元素,则它们被认为是相等的,并且集合维护它们的顺序不应该在它们的相等性上有所不同.由于equals-hashCode-contract,hashCode实现还必须反映这种行为,这意味着具有相同元素但排序不同的两个集合应具有相同的哈希码.(这同样适用于地图,这在技术上是一组键值对)

示例(伪代码):

let set1: Set<String> = [ "a", "b", "c" ]
let set2: Set<String> = [ "b", "c", "a" ]
set1 == set2       // should return true
set1.hashCode == set2.hashCode // should also return true
Run Code Online (Sandbox Code Playgroud)

我如何实现一个相当好的哈希算法,hashCode上面例子中的s返回相同的值?

java algorithm hash set

15
推荐指数
1
解决办法
3056
查看次数

标签 统计

algorithm ×1

hash ×1

java ×1

set ×1