java中哈希表,Map,HashCode,Equals等介绍

来源:互联网 发布:科比0506赛季数据 编辑:程序博客网 时间:2024/04/30 21:08

关于哈希表的原理,及java中hashmap等

  1. 哈希表
    在java中如hashtable实现了哈希表等,如put(K,Vlaue)是先计算出K的hashcode值,再通过hashcode计算出
    hashtable中Entry[]数组 table的下标,在table[next]中进行遍历Entry链表进行key和value的比较,相同的key
    及hashcode,用新值取代旧值,不同的直接添加进去。(具体实现:http://www.tuicool.com/articles/BvI3Ir)

  2. HashCode
    hashcode是通过一定规则,得到与对象地址,内容等相关的int值。

  3. 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的意义。

1 0