摘要:常見問題匯總的默認初始長度是多少最大長度是多少的默認初始長度是,是由設定的。這里需要注意常量并不是真正的最大長度,原因可以參考方法。特殊情況是存在長度超過的最大支持長度則調用進行特殊處理防止數組超出最大長度最大值。
簡介
ArrayList使用Object數組存儲數組元素,并使用size屬性記錄數組長度。
需要注意ArrayList是非線程安全的。
常見問題匯總ArrayList的默認初始長度是多少?最大長度是多少?
ArrayList的默認初始長度是10,是由DEFAULT_CAPACITY設定的。
由于ArrayList底層是用Object數組存儲元素,所以ArrayList最大長度為Integer.MAX_VALUE,即2147483647(2)。這里需要注意常量MAX_ARRAY_SIZE(Integer.MAX_VALUE - 8)并不是ArrayList真正的最大長度,原因可以參考hugeCapacity()方法。
ArrayList是如何擴容的?
擴容發生在插入數組元素時(關鍵方法為grow()方法)
先計算增加完新元素后的ArrayList長度size
然后size與minCapacity比較來判斷是否需要擴容
擴容時一般擴容為新數組長度newCapacity為原數組長度oldCapacity的1.5倍(oldCapacity帶符號右移1位并加上oldCapacity)。
特殊情況是存在newCapacity長度超過Array的最大支持長度MAX_ARRAY_SIZE則調用hugeCapacity()進行特殊處理防止數組超出最大長度(int最大值)。
ArrayList擴容后是否會自動縮容?如果不能怎樣進行縮容?
ArrayList只能自動擴容,不能自動縮容。如果需要進行縮容,可以調用ArrayList提供的trimToSize()方法。
ArrayList底層數組擴容時是如何保證高效復制數組的?
表面上是調用Arrays.copyOf()方法,實際上是Arrays.copyOf()通過調用System.arraycopy()方法確保高效復制數組。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73796.html
摘要:類比根據定制排序,返回最大元素,排序規則由類控制。返回指定支持的同步線程安全的。將返回的列表更改為寫入數組。字符串表示由數組元素的列表組成,括在方括號中。 1. Collections類的常見操作: 1.1. 排序操作: 集合類庫使用的是歸并排序比快速排序要慢一些,快速排序是通用排序算法的傳統選擇。但是,歸并排序有一個主要的優點就是穩定。 void reverse(List list)...
摘要:既然的構造方法是復制新的數組,那么是為什么呢這里提前透露一下結論數組元素為對象時,實際上存儲的是對象的引用,進行數組復制也只是復制了對象的引用。即數組元素為對象時,實際上存儲的是對象的引用。 前言 事件起因是由于同事使用ArrayList的帶參構造方法進行ArrayList對象復制,修改新的ArrayList對象中的元素(對象)的成員變量時也會修改原ArrayList中的元素(對象)的...
摘要:首先,我們來按照泛型的標準重新設計一下類。注意參數為而不是泛型。利用形式的通配符,可以實現泛型的向上轉型,來看例子。需要注意的是,無法從這樣類型的中取出數據。showImg(https://user-gold-cdn.xitu.io/2019/5/17/16ac3bf3eb16160c); 00、故事的起源 二哥,要不我上大學的時候也學習編程吧?有一天,三妹突發奇想地問我。 你確定要做一名...
摘要:盡可能避免使用,會導致復制數組,降低效率。再額外提一點,我們常用的另一個容器也是推薦要初始化長度從而避免擴容。 showImg(https://segmentfault.com/img/remote/1460000019659723); 前言 前不久幫同事一起 review 一個 job 執行緩慢的問題時發現不少朋友在擼碼實現功能時還是有需要細節不夠注意,于是便有了這篇文章。 Arra...
摘要:以下指代數組,指代數組列表。常見的轉換方法是或。在的使用過程中需要注意,當要轉換的長度小于的時,不要試圖通過傳入形參的方式進行轉換,雖然這在的長度大于時不會出現問題。所以,極度建議在轉換之前初始化的長度為的,并且使用返回值重新給賦值。 Array 和 List 都是我們在開發過程中常見的數據結構。我們都知道 Array 是定長的,List 是可變長。而且,List 的實現類 Array...
閱讀 2263·2021-09-30 09:48
閱讀 3634·2021-09-24 10:27
閱讀 1791·2021-09-22 15:32
閱讀 2026·2021-08-09 13:44
閱讀 3575·2019-08-30 15:55
閱讀 1045·2019-08-29 17:12
閱讀 2000·2019-08-29 17:05
閱讀 2918·2019-08-29 13:43