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

关于java hash的一点点记要

2013-10-28 
关于java hash的一点点记录1.Object的hashCode()方法会保证总是返回不同的int值作为散列码,Object的equals

关于java hash的一点点记录
1.Object的hashCode()方法会保证总是返回不同的int值作为散列码,Object的equals方法直接比较两个对象的地址是否相同。

2.String类作为继承Object的例子,重新实现了equals()方法和hashCode()方法

equals()方法是将String中保存的字符串转换成字符数组进行逐个对比匹配,字符相等即为两个String相等(Object中原本是比较地址)。

hashCode()方法也进行了重新实现,针对相同内容的String,会根据其字符数组的每个字符计算散列值并进行求总和,从而保证相同内容的String的hashCode()会返回相同值。

3.equals()方法的意义就是两个对象相等,比如在HashSet中,需要判断加入的对象是否已经存在,也就是需要判断是否已经有相等的对象,比如String类型的对象,用普通的equals方法比较的时候效率很低,并且无法实现hash读取,使用hashCode()可以快速判断出对象的不同,但是还是要经过equals()方法才能确定两个对象确实相同,所以equals相等的对象,hashCode()一定是相等的。

4.我的理解是:hashCode()主要就是为了实现Hash系列集合而存在,虽然没有仔细去探究Java中具体的Hash函数,但是我感觉差不多就是这样一个原理:键值对象存入Hash集合的时候,根据键对象的hashCode()和集合的Hash函数进行存入键和值,读取的时候再根据键对象的hashCode()和集合的Hash函数进行快速读取值,从而利用Hash的思想大大提高数据的存取效率,避免了普通低效的查找,达到常数时间的存取效率。








热点排行