第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

hashmap

標(biāo)簽:
Java

1.hashmap 为什么内置数组长度一定是2的指数次幂?


计算key值的hashcode后,转为数组index时,用的位与运算(为了提高速度)


hashcode & (arr.length-1)


0000000000011111111111111111


length时2的n次方,才能保证&计算后,一定不越界。


2.并发扩容,死锁 (java7存在,因为是头插法,java8链表用尾插法解决)


并发扩容,数据丢失


3.为什么hashmap扩容因子是0.75


0.75一个空间换时间的考虑


4.为什么转红黑树是临界值是>8,红黑树转链表是<=6


红黑树的平均查找长度是log(n),长度为8,查找长度为log(8)=3,链表的平均查找长度为n/2,当长度为8时,平均查找长度为8/2=4,这才有转换成树的必要;链表长度如果是小于等于6,6/2=3,虽然速度也很快的,但是转化为树结构和生成树的时间并不会太短。


5.扩容时,链表最长时会是几?


                for (int binCount = 0; ; ++binCount) {

                    if ((e = p.next) == null) {

                        p.next = newNode(hash, key, value, null);

                        if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st

                            treeifyBin(tab, hash);

                        break;

                    }

链表插入第9个时,重构为红黑树 ,(必须同时满足数组长度>=64,否则扩容,不改为红黑树)


对外表现不会大于9,中间会是9


    final void treeifyBin(Node<K,V>[] tab, int hash) {

        int n, index; Node<K,V> e;

        if (tab == null || (n = tab.length) < MIN_TREEIFY_CAPACITY)

6.扩容时,原有的红黑树和链表会怎样?

链表,与capacity &分成两份,一份在原处,一份在新增一倍长度的原处

红黑树,个数<=6,转链表。否则也是分两份,一份在原处,一份在新增一倍长度的原处



點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消