关于哈希表的原理,及java中hashmap等
哈希表
在java中如hashtable实现了哈希表等,如put(K,Vlaue)是先计算出K的hashcode值,再通过hashcode计算出
hashtable中Entry[]数组 table的下标,在table[next]中进行遍历Entry链表进行key和value的比较,相同的key
及hashcode,用新值取代旧值,不同的直接添加进去。(具体实现:http://www.tuicool.com/articles/BvI3Ir)HashCode
hashcode是通过一定规则,得到与对象地址,内容等相关的int值。hashcode和equals结果的关系
相同的对象hashcode值一定相等,不同的可能相等,不管equals是否重写,equals结果相等,hashcode值一定相等,
equals结果值不等式,hashcode可能不等,equals重写之后,hashcode的值也要重写
如:
A a=new A();
B b=new B();
使用equals比较是a和b相等,如果不重写的话,按照以前的规则hashcode不相等,那么map.get(a)和map.get(b)的结 果不一样,则就失去了改hashcode的意义。