📣 4th of July限时特惠: VIP通行证立减$68
楼主: BondWong
跳转到指定楼层
上一主题 下一主题
收起左侧

Wepay OA

🔗
Thunder_up 2016-2-20 05:00:55 | 只看该作者
全局:
BondWong 发表于 2016-2-20 04:37
是个链表,不覆盖的

不是setValue()麼?
回复

使用道具 举报

🔗
Thunder_up 2016-2-20 05:02:53 | 只看该作者
全局:
BondWong 发表于 2016-2-20 04:37
是个链表,不覆盖的

一個(NULL,3) 一個是(5,2).Put了第一個entry入index為0的位置,想put第二个entry时如果哈希后的index也为0,就不是append了,而是用到了找到了(NULL,3)这个entry并且setValue了为2
回复

使用道具 举报

🔗
Thunder_up 2016-2-20 05:18:12 | 只看该作者
全局:

额,楼主你的代码是这样的
for (Entry<K, V> e : this.array.get(index))
                        if (e.getKey() == null || e.getKey().equals(entry.getKey())) {
                                e.setValue(entry.getValue());
                                return;
                        }

                this.array.get(index).add(entry);
                this.size++;

你那个add是遍历了该index的链表发现没有不用覆盖时,才add.如果有旧的key,你setValue()完就return了。
回复

使用道具 举报

🔗
Thunder_up 2016-2-20 05:20:03 | 只看该作者
全局:

那这样的一个结果就是,你的hashTable里index为0的位置,只要插入了一个(null, x)进去,后面其它所有要插入table[0]的所有entry都不会append到该位置的链表,那链表始终只会有一个节点,是(Null, y),(null, z).... 楼主你觉得呢
回复

使用道具 举报

无效楼层,该帖已经被删除
🔗
Thunder_up 2016-2-20 05:28:09 | 只看该作者
全局:
BondWong 发表于 2016-2-20 05:24
啊~貌似比较难讲明白,你画个图走一遍?不会出现你说那个情况的

我觉得我没想错。。楼主你再想想好嘞。来一个(null,3),直接判断Index为0,input进去。再来一个(5,2),把5哈希完如果index为0,准备插入table[0],首先判断table[0]的链表有没相同的key,然而因为那个判断,所有key为Null的都会setValue,然后return。。。这样就出问题了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表