卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

數(shù)組擴(kuò)容的兩種方式 變長數(shù)組是什么?

變長數(shù)組是什么?為什么HashMap的數(shù)組長度一定是2的次冪?]有兩個(gè)原因1。為了查找和添加元素,模塊操作用于查找數(shù)組的下標(biāo)。如果模運(yùn)算是2的n次方,則可以用位運(yùn)算符代替,效率高。2. 擴(kuò)容方便。如果

變長數(shù)組是什么?

為什么HashMap的數(shù)組長度一定是2的次冪?

]有兩個(gè)原因

1。為了查找和添加元素,模塊操作用于查找數(shù)組的下標(biāo)。如果模運(yùn)算是2的n次方,則可以用位運(yùn)算符代替,效率高。

2. 擴(kuò)容方便。

如果直接查看源代碼,可以看到擴(kuò)展的resize方法的參數(shù)是2*表.長度(圖中是JDK7的源代碼),也就是說每次擴(kuò)容都是容量的兩倍,擴(kuò)容后需要進(jìn)行數(shù)據(jù)遷移。如果初始長度為2的n次方,則擴(kuò)展將減少數(shù)據(jù)遷移的次數(shù)。

例如,初始長度為16,將擴(kuò)展到32。位置1中的節(jié)點(diǎn)僅在擴(kuò)展后遷移到位置1和17。實(shí)際上,I位置的節(jié)點(diǎn)只會(huì)遷移到I之前和I擴(kuò)展之后的數(shù)組長度。

例如,當(dāng)數(shù)組的長度為16時(shí),它位于1的位置。當(dāng)它擴(kuò)展到32時(shí),它會(huì)被移到17的位置

例如,當(dāng)數(shù)組的長度為16時(shí),它就在1的位置。當(dāng)它擴(kuò)展到32時(shí),它仍然處于1的位置。

這是主要原因。

順便說一下,在源代碼中,如果您不將其設(shè)置為2的n次方,它也將幫助您將其設(shè)置為2的n次方。例如,如果通過15,它將幫助您將其設(shè)置為16。源代碼的對應(yīng)方法是2的整數(shù)倍。

希望對您有所幫助。你可以關(guān)注我,分享一些關(guān)于源代碼思想的知識

Java中數(shù)組的長度是不能改變的。Java中數(shù)組的定義是一組相同類型、固定長度的數(shù)據(jù)。一旦初始化,長度就不能更改。如果要使用的數(shù)組長度不確定,有兩種解決方案:第一種是在初始化數(shù)組時(shí)申請足夠大的長度,這樣會(huì)造成內(nèi)存空間的浪費(fèi),一般不建議這樣做。第二種方法是以Java提供的set方式存儲(chǔ)數(shù)據(jù),如list、set和map對象。一方面,這些類型的對象的長度是動(dòng)態(tài)增長的。另一方面,這些類提供了許多方法來輕松地操作數(shù)據(jù)。因此,當(dāng)要存儲(chǔ)的數(shù)據(jù)量不確定時(shí),第二種方法優(yōu)于第一種方法。

數(shù)組可以改變長度嗎?

一定要先聲明數(shù)組的長度,否則系統(tǒng)不會(huì)為其分配內(nèi)存空間。Java中的數(shù)組是固定長度的。例如,int[]a={}定義的數(shù)組a的長度是0,這是固定長度。以后不允許給它賦值,因?yàn)樗拈L度在定義后不能更改。使用表時(shí),數(shù)組的長度不能超過限制。