首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

运用散列数据结构注意点

2012-12-18 
使用散列数据结构注意点?Goundhog自动继承基类Object,所以这里使用Object的hashCode()方法生成散列码,而它

使用散列数据结构注意点

?

Goundhog自动继承基类Object,所以这里使用Object的hashCode()方法生成散列码,

而它默认是使用对象的地址计算散列码。所以查找不到。

?

可能你会认为,只需编写恰当的hashCode()方法的覆盖版本即可。但是它

任然无法正常运行,除非你同时覆盖equals()方法,它也是Object的一部分。

HashMap使用equals()判断当前键是否与表中存在的键相同。

正确的equals()方法必须满足下列5个条件:

1自反性对任意xx.equals(x) 一定返回true

2对称性

3传递性

4一致性对任意x和y,如果对象中用于等价比较的信息没有改变,

那么无论调用x.equals(y)多少次,返回的结果保持一致。

5对任何不是null的x, x.equals(null)一定返回false;

?

再次强调,默认的Object.equals()只是比较对象的地址,所以一个Goundhog(3)

并不等于另一个Goundhog(3)。因此,如果要使用自己的类作为HashMap的类,

必须同时重载hashCode()和equals().

热点排行