首頁  >  文章  >  Java  >  java中的ArrayList與一般陣列有什麼不同?效率如何?

java中的ArrayList與一般陣列有什麼不同?效率如何?

王林
王林轉載
2019-11-25 13:37:353225瀏覽

java中的ArrayList與一般陣列有什麼不同?效率如何?

下面由java快速入門欄位為大家介紹ArrayList與一般陣列的差異。

什麼是ArrayList?

ArrayList的實作原理其實就是陣列(動態陣列)。

動態陣列與一般陣列有什麼不同?

與Java中的陣列相比,ArrayList的容量能動態地成長。

ArrayList效率怎麼樣?

ArrayList不是線程安全的,所以效率比較高 ,但只能用於單線程的環境。

ArrayList主要繼承哪些類別實作了哪些介面?

ArrayList主要繼承了AbstractList類,實作了ListRandomAccessCloneableSerializable介面

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable

RandomAccess的意思是其擁有快速存取的能力,ArrayList可以以O(1)[^1]的時間複雜度去根據下標訪問元素。由於ArrayList底層機構是數組,所以它佔據了一塊連續的記憶體空間,其長度就是數組的大小,因此它也有數組的缺點,在空間效率不高,但是也有它的優點,就是查詢速度快,時間效率較快。

ArrayList的常數與變數有哪些?

// 序列ID
private static final long serialVersionUID = 8683452581122892189L;

// ArrayList默认的初始容量大小
private static final int DEFAULT_CAPACITY = 10;

// 空对象数组,用于空实例的共享空数组实例
private static final Object[] EMPTY_ELEMENTDATA = {};

// 空对象数组,如果使用默认的构造函数创建,则默认对象内容是该值
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};

// 存放当前数据,不参与序列化
transient Object[] elementData; // non-private to simplify nested class access

// list大小
private int size;

當集合中的元素超出數組規定的長度時,數組就會進行擴容操作,擴容操作就是ArrayList存儲操作緩慢的原因,尤其是當數據量較大的時候,每次擴容消耗的時間會越來越多。

以上是java中的ArrayList與一般陣列有什麼不同?效率如何?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除