Java中的List類和原語array數據結構都是存儲和訪問對象集合的機制。 ArrayList類是List接口的可調整大小的實現,其中ArrayList內部有一個對象數組。
Java API通常具有需要一個對象數組或List的方法,因此Java中有機制將原始數組轉換爲List,反之亦然。
轉換原始陣列到List
使用Arrays.asList()
從陣列到列表轉換。
Integer[] array = new Integer[] { 95, 87, 83 };
List<Integer> list = Arrays.asList(array);
System.out.println(list); // [95, 87, 83]
轉換列表以基本數組
如果要轉換列表到陣列中使用的toArray()方法。
Integer[] array2 = list.toArray(new Integer[array.size()]);
同樣,如果要轉換的原始INT值列表可以簡單地遍歷值,並將它們添加。
int[] array3 = new int[] { 95, 87, 83 };
List<Integer> list3 = new ArrayList<Integer>(array3.length);
for(int val : array3) {
list3.add(val);
}
System.out.println(list3); // [95, 87, 83]
異同列表和基本數組
兩種列表和原始陣列之間的差異都具有所述第一元件爲0的索引和第n元素具有n個索引 - 1.訪問一個與索引元素小於0或大於N-1導致異常:IndexOutOfBoundsException異常在列表或ArrayIndexOutOfBoundsException異常在陣列的情況下。
獲取和基本數組元素集合
int grade = array[0];
array[0] = 98;
int len = array.length; // number of elements in array
grade = array[-1]; // throws ArrayIndexOutOfBoundsException
獲取和設置列表
int grade = list.get(0);
list.set(0, 98);
int len = list.size(); // number of elements in list
grade = list.get(-1); // throws IndexOutOfBoundsException
除非列出的是不變的元素(或只讀),那麼你可以添加或刪除元素它。見Collections.unmodifiableList()。要增大/縮小基本數組,您必須創建一個新數組並將舊元素從舊數組複製到新數組。
一般而言,基本數組和解釋在語義上等同,但是具有不同的語法。一種形式可以轉換爲另一種形式。
首先谷歌命中:http://javahungry.blogspot.com/2015/03/difference-between-array-and-arraylist-in-java-example.html –
@Robert哥倫比亞但一個'ArrayList'也不是一個列表。 –
寫'List quizGrades = new ArrayList ();'而不是。嘗試對接口進行編碼,而不是在可能的情況下針對具體實現編碼。 –
mike