本文經過實例講解Java中如何使用ArrayList類。html
Java.util.ArrayList類是一個動態數組類型,也就是說,ArrayList對象既有數組的特徵,也有鏈表的特徵。能夠隨時從鏈表中添加或刪除一個元素。ArrayList實現了List接口。java
你們知道,數組是靜態的,數組被初始化以後,數組長度就不能再改變了。ArrayList是能夠動態改變大小的。那麼,何時使用Array(數組),何時使用ArrayList?答案是:當咱們不知道到底有多少個數據元素的時候,就可以使用ArrayList;若是知道數據集合有多少個元素,就用數組。api
ArrayList類支持3個構造方法。數組
Arraylist()
這個構造方法構造了一個空的鏈表。oracle
ArrayList(Collection<? extends E> c)
這個構造方法構造了一個包含指定元素集合的鏈表,注意,這裏的字符E是一個標記,用來表示集合中元素的類型。至於具體是什麼類型,須要你在使用這個構造方法的時候來指定。jsp
ArrayList(int initialCapacity)
這是第三個構造方法,構造了一個指定大小但內容爲空的鏈表。initialCapacity參數就是初始容量大小。函數
舉例來講,若是你要建立一個空的數組鏈表,用來存放String類型的對象,那麼你能夠像下面這樣作:oop
ArrayList<String> list = new ArrayList<String>();spa
若是你須要建立一個指定初始容量的數組鏈表,你能夠像下面這樣作:code
ArrayList<Integer> list = new ArrayList<Integer>(7);
注意:ArrayList類只支持對象類型,不支持 基礎數據類型。就是說ArrayList對象只能存放對象,不能存放基礎數據類型的數據。
下面是總結了一些比較經常使用的ArrayList類成員方法:
boolean add(Element e)
void add(int index, Element e)
void clear()
E remove(int index)
protected void removeRange(int start, int end)
E get(int index)
Object[] toArray()
E set(int index, E element)
boolean contains(Object o)
int indexOf(Object o)
int lastIndexOf(Object o)
boolean isEmpty()
int size()
以上是ArrayList類中使用比較多的成員方法。每一個方法的更詳細的說明或其它沒有說起到的方法,讀者能夠參考java官方api
1 import java.util.*; 2 3 public class ArrayListExamples { 4 5 public static void main(String args[]) { 6 // 建立一個空的數組鏈表對象list,list用來存放String類型的數據 7 ArrayList<String> list = new ArrayList<String>(); 8 9 // 增長元素到list對象中 10 list.add("Item1"); 11 list.add("Item2"); 12 list.add(2, "Item3"); // 此條語句將會把「Item3」字符串增長到list的第3個位置。 14 list.add("Item4"); 15 16 // 顯示數組鏈表中的內容 17 System.out.println("The arraylist contains the following elements: " 18 + list); 19 20 // 檢查元素的位置 21 int pos = list.indexOf("Item2"); 22 System.out.println("The index of Item2 is: " + pos); 23 24 // 檢查數組鏈表是否爲空 25 boolean check = list.isEmpty(); 26 System.out.println("Checking if the arraylist is empty: " + check); 27 28 // 獲取鏈表的大小 29 int size = list.size(); 30 System.out.println("The size of the list is: " + size); 31 32 // 檢查數組鏈表中是否包含某元素 33 boolean element = list.contains("Item5"); 34 System.out 35 .println("Checking if the arraylist contains the object Item5: " 36 + element); 37 38 // 獲取指定位置上的元素 39 String item = list.get(0); 40 System.out.println("The item is the index 0 is: " + item); 41 42 // 遍歷arraylist中的元素 43 44 // 第1種方法: 循環使用元素的索引和鏈表的大小 45 System.out 46 .println("Retrieving items with loop using index and size list"); 47 for (int i = 0; i < list.size(); i++) { 48 System.out.println("Index: " + i + " - Item: " + list.get(i)); 49 } 50 51 // 第2種方法:使用foreach循環 52 System.out.println("Retrieving items using foreach loop"); 53 for (String str : list) { 54 System.out.println("Item is: " + str); 55 } 56 57 // 第三種方法:使用迭代器 58 // hasNext(): 返回true表示鏈表鏈表中還有元素 59 // next(): 返回下一個元素 60 System.out.println("Retrieving items using iterator"); 61 for (Iterator<String> it = list.iterator(); it.hasNext();) { 62 System.out.println("Item is: " + it.next()); 63 } 64 65 // 替換元素 66 list.set(1, "NewItem"); 67 System.out.println("The arraylist after the replacement is: " + list); 68 69 // 移除元素 70 // 移除第0個位置上的元素 71 list.remove(0); 72 73 // 移除第一次找到的 "Item3"元素 74 list.remove("Item3"); 75 76 System.out.println("The final contents of the arraylist are: " + list); 77 78 // 轉換 ArrayList 爲 Array 79 String[] simpleArray = list.toArray(new String[list.size()]); 80 System.out.println("The array created after the conversion of our arraylist is: " 81 + Arrays.toString(simpleArray)); 82 } 83 }