初始化ArrayList集合的方式有幾種?可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于網站設計、做網站、莆田網絡推廣、微信平臺小程序開發、莆田網絡營銷、莆田企業策劃、莆田品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供莆田建站搭建服務,24小時服務熱線:13518219792,官方網址:vcdvsql.cn
概述
ArrayList是一個以動態數組為基礎實現的非線程安全的集合,ArrayList的元素可以為空、可以重復,同時又是有序的(讀取和存放的順序一致 )。
ArrayList繼承AbstractList,實現了List
、RandomAccess
(可以快速訪問)、Cloneable
(可以被克隆)、java.io.Serializable
(支持序列化)
ArrayList的初始化方式有三種:
1、無參構造,默認長度為10,是我們使用的最多的一種初始化方式:
/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
這個時候,我們從源碼中可以看到,里面只有一行代碼:this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA,那么定義的DEFAULTCAPACITY_EMPTY_ELEMENTDATA可以在源碼中找到:
/**
* Shared empty array instance used for default sized empty instances. We
* distinguish this from EMPTY_ELEMENTDATA to know how much to inflate when
* first element is added.
*/
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
通過注釋可以得知,源碼中定義了一個空的數組作為默認的大小,并且在第一個元素添加進來的時候再確定把數組擴充多少,這段邏輯會在接下來添加元素部分作出解釋。
2、指定初始化長度:
/**
* Constructs an empty list with the specified initial capacity.
* @param initialCapacity the initial capacity of the list
* @throws IllegalArgumentException if the specified initial capacity
* is negative
*/
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity);
}
}
3、用一個Collection對象來構造
/**
* Constructs a list containing the elements of the specified
* collection, in the order they are returned by the collection's
* iterator.
*
* @param c the collection whose elements are to be placed into this list
* @throws NullPointerException if the specified collection is null
*/
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
if ((size = elementData.length) != 0) {
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
} else {
// replace with empty array.
this.elementData = EMPTY_ELEMENTDATA;
}
}
看完上述內容,你們對初始化ArrayList集合的方式有進一步的了解嗎?如果還想了解更多相關內容,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀。
網頁名稱:初始化ArrayList集合的方式有幾種
分享地址:http://vcdvsql.cn/article40/jhgsho.html
成都網站建設公司_創新互聯,為您提供虛擬主機、網站收錄、電子商務、網站排名、標簽優化、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯