目錄java
能不能有一種數組能夠在刪除掉某些元素自動縮小就行了。但是話說哪裏學的Java?數組能刪除元素嗎?今天講一下一個特殊對象——ArrayList,它的出現與存在和數組有着幾分相似。下面按照它是什麼-有什麼用-怎麼用來說?再講講與數組的區別?算法
源碼搞上!!!很明顯它是一個類,繼承(extends)了AbstractList,實現(implements)了List、RandomAcess等。(extends能夠理解爲全盤繼承了父類的功能。implements能夠理解爲爲這個類附加一些額外的功能)。它是一個容量能夠自動增加的動態數組(並不是數組),能夠支持刪除操做。數組
它的初始容量爲10。下面的構造方法第一個就是構造容量爲10的。要想改變這個容量,就像第二個的構造方法那樣就能夠了。第三個是構造一個包含指定集合的元素的列表,按照他們由集合的迭代器返回的順序。安全
值得一提的是,Java集合框架中定義了List接口,並且只有兩個實現,除了這個ArrayList還有LinkedList。在數據結構與算法分析書上有着這麼兩句結論,具體獲得是在書中經過了算法得來的。LinkedList在Java和C#中其實是在使用雙鏈表。數據結構
數組表(ArrayList)和數組很類似在於,讀取的時候爲O(1),在插入時候就變爲O(n)了,不一樣在於這個數組表能夠增長長度,在添加時候,只需表尾編號加一即可以肯定新元素了。多線程
ArrayList不是線程安全的。線程安全是說一個對象能夠徹底被多個線程同時使用,不出問題。這個在後面的深刻學習虛擬機會常常遇到——使用多線程之間同步synchronized或使用鎖(lock)能夠解決。框架
動態的增長和減小元素,實現了ICollection和list接口。固然還能夠靈活得選擇數組的大小。dom
3.經常使用方法
學習
想要存儲數字,也就是基本數據類型,就可使用包裝類(位於java.lang下)。線程
基本類型 | 包裝類 |
---|---|
int | Integer |
byte | Byte |
short | Short |
long | Long |
float | Float |
doublr | Double |
char | Character |
boolean | Boolean |
ArrayList<Integer> list = new ArrayList<>;//這樣建立不會報錯了
實例:生成1-30之間的隨機數,添加到集合裏,存儲5個
//主代碼 ArrayList<Integer> list2= new ArrayList(); Random r = new Random(); for(int i = 0; i < 5; i++){ int num = r.nextInt(30) + 1; list.add(num); }