java吧 关注:1,299,919贴子:12,842,081
  • 12回复贴,共1

还是哈希表的问题

只看楼主收藏回复

如图,哈希值存在哪个地方,哈希值是数组地址码?equals()方法比较的内容存在哪里


IP属地:上海来自Android客户端1楼2015-09-15 16:13回复
    求解答


    IP属地:上海来自Android客户端2楼2015-09-15 16:14
    回复
      2026-03-21 03:31:40
      广告
      不感兴趣
      开通SVIP免广告
      不要沉,坐等


      IP属地:上海3楼2015-09-15 16:15
      回复
        服了。。。一直看你在这问这类问题。
        1.定义一个一个数组a[10] (就是你图片上左边那竖着的栈),每个值都指向一个链表的地址(就是栈右边的横着的链表)。我简单的定义下hash存放规则,就是hashcode%10。
        2.来个字符串,“abc”,假设hashcode是11,那么11%10 = 1。放a[0]指向的链表里,假设a[0]指向的链表为b[10](简单起见,我就这么表示),那么b[0] = "abc"。
        3.来个字符串,“sdf”,假设hashcode是12,那么12%10 = 2 。放a[1]指向的链表里,原理同上。
        4.来个字符串,“xxx”,假设hashcode是11,那么11%10 = 1,放a[0]指向的链表里。问题来了,a[0]指向的链表b[10]已经有了一个数据,并且b[0] = "abc"。注意,这个时候,就开始调用xxx的equal方法。(1)如果发现xxx的equal方法与b[0](也就是“abc”)比较之后返回true。就说明是同一个字符串,就把b[0]中的数据换成“xxx”。(2)如果xxx的equal方法返回false,也就是和b[0],不同。这时候,就把b[1]中的数据变为"xxx"。b[1] = xxx。
        5.以上继续


        4楼2015-09-15 16:35
        收起回复


          5楼2015-09-15 17:23
          回复
            我也在补哈希表


            IP属地:广东来自Android客户端6楼2015-09-15 20:22
            回复
              我就知道一个字符串hash值 如果和另一个相同了 再去equals


              来自iPhone客户端7楼2015-09-15 21:52
              回复
                看hash表,然后看jdk的hashmap的实现


                IP属地:上海8楼2015-09-15 22:32
                回复