Map map = new HashMap();
map.get(obj),这里用的是什么查找算法?

解决方案 »

  1.   

    当然是Hash查找了
    怎么放进去的,怎么找出来,用一个Hash函数计算目标的地址。
      

  2.   

    原理基本上是这样的:根据 key 获得 hashCode 值HashMap 初始有很多个类似于“桶”的数据结构,比如说预设了 10 个桶,通过 hashCode 经过一定的算法(这个算法必须是快速的)
    得到这个 hashCode 应存在哪个桶中,然后内部生成 Map.Entry 对象将 key 和 value 存到桶中去。
      

  3.   

    得首先从Map的ketSet中找到键obj,是怎么找的?时间复杂度是多少?
      

  4.   


    HashMap是使用key的hashcode值和数据个数-1的与运算后的结果作为索引的数组存储,每个数组里面又是一个数组。查找的时候是先根据hashcode找到数组,这个运算就基本上不存在时间复杂度了,或者说时间复杂度就是1然后再遍历这个数组,这个数组的长度存在很大的偶然性,取决与key的hashcode值。所以算时间复杂度还真不好算
      

  5.   


    我怀疑桶里放的是Map.Entry的引用,对象在堆中随意分配的空间中放.
      

  6.   

    头晕,what is hash? what is hashcode?
      

  7.   

    Map是接口,hashMap是Map的一种实现。接口不能被实例化。
      

  8.   

    数据结构的书上面有hash算法是怎么实现的。