集合的預設初始容量 載入因子 擴容增量

2021-07-29 03:31:46 字數 699 閱讀 7884

集合的初始容量很簡單,集合在建立時有乙個預設的大小。

當程式集合的初始容量不夠使用時,就需要去擴容。擴容就是增加容量。

載入因子是雜湊表在其容量自動增加之前可以達到多滿的一種尺度。什麼意思呢?當集合的條目數超出了載入因子與當前容量的乘積時,通過呼叫 rehash 方法將容量翻倍。比如,將初始容量設定為10,載入因子為0.7 那麼,當容量中有7個(10 * 0.7)元素時,就會進行擴容。

此處引用:

比如說你要裝水 你首先找個乙個桶 這個桶的容量就是載入容量,載入因子就是比如說你要控制在這個桶中的水要不超過水桶容量的多少,比如載入因子是0.75 那麼在裝水的時候這個桶最多能裝到3/4 處, 這麼已定義的話 你的桶就最多能裝水 = 桶的容量 * 載入因子

如果桶的容量是40 載入因子是0.75 那麼你的桶最多能裝40*0.75 = 30的水

如果你要裝的水比30 多 那麼就該用大一點的桶 而rehash就是負責增加桶的容量的方法

當底層實現涉及到擴容時,容器或重新分配一段更大的連續記憶體(如果是離散分配則不需要重新分配,離散分配都是插入新元素時動態分配記憶體),要將容器原來的資料全部複製到新的記憶體上,這無疑使效率大大降低。

擴容增量更好理解,則是每次進行擴容空間的增量。

集合的預設初始容量 載入因子 擴容增量

常用集合的預設初始容量和擴容的原因 當底層實現涉及到擴容時,容器或重新分配一段更大的連續記憶體 如果是離散分配則不需要重新分配,離散分配都是插入新元素時動態分配記憶體 要將容器原來的資料全部複製到新的記憶體上,這無疑使效率大大降低。載入因子的係數小於等於1,意指 即當 元素個數 超過 容量長度 載入...

java容器的預設初始容量 載入因子 擴容增量問題

原文 這裡要討論這些常用的預設初始容量和擴容的原因是 當底層實現涉及到擴容時,容器或重新分配一段更大的連續記憶體 如果是離散分配則不需要重新分配,離散分配都是插入新元素時動態分配記憶體 要將容器原來的資料全部複製到新的記憶體上,這無疑使效率大大降低。載入因子的係數小於等於1,意指 即當 元素個數 超...

常用集合的預設初始容量和擴容的原因

常用集合的預設初始容量和擴容的原因 當底層實現涉及到擴容時,容器或重新分配一段更大的連續記憶體 如果是離散分配則不需要重新分配,離散分配都是插入新元素時動態分配記憶體 要將容器原來的資料全部複製到新的記憶體上,這無疑使效率大大降低。載入因子的係數小於等於1,意指 即當 元素個數 超過 容量長度 載入...