Array與Arrays的區別(數組轉list)
Java中最基本的一個存儲結構。
提供了動態創建和訪問 Java 數組的方法。其中的元素的類型必須相同。
效率高,但容量固定且無法動態改變。
它無法判斷其中實際存有多少元素,length只是告訴我們array的容量。
2、靜態類Arrays
此靜態類專門用來操作array ,提供搜索、排序、復制等靜態方法。
equals():比較兩個array是否相等。array擁有相同元素個數,且所有對應元素兩兩相等。
sort():用來對array進行排序。
binarySearch():在排好序的array中尋找元素。
Arrays.asList(array):將數組array轉化為List (此種方法不正規)
注意:
為了實現把一個數組轉換成一個ArrayList,很多Java程序員會使用如下的代碼:

Arrays.asList確實會返回一個ArrayList對象,但是該類是Arrays類 中一個私有靜態內部類,而不是常見的java.util.ArrayList類。這個java.util.Arrays.ArrayList類具有 set(),get(),contains()等方法,但是不具有任何添加或移除元素的任何方法。因為該類的大小(size)是固定的。為了創建出一個真正的ArrayList,代碼應該如下所示:

我們知道,ArrayList的構造方法可以接受一個Collection類型的對象,而我們的 java.util.Arrays.ArrayList正好也是它的一個子類。實際上,更加高效的代碼示例是:

(正確的做法是test2和test3的做法)
package Array2List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
public class Array2List {
/**
* 錯誤的做法 此種方法返回的list不具有任何添加或移除元素的任何方法。因為該類的大小(size)是固定的。
*/
@Test
public void test1() {
String attr[] = { "1", "2", "3" };
List<String> list = Arrays.asList(attr);
list.add("4");// 報錯
for (String s : list) {
System.out.println(s);
}
}
/**
* 正確的做法
* ArrayList的構造方法可以接受一個Collection類型的對象,而我們的 java.util.Arrays.ArrayList正好也是它的一個子類
*/
@Test
public void test2() {
String attr[] = { "1", "2", "3" };
List<String> list = new ArrayList<String>(Arrays.asList(attr));
list.add("4");// 不會報錯
for (String s : list) {
System.out.println(s);// 1234
}
}
/**
* 更加高效的做法
* ArrayList的構造方法可以接受一個Collection類型的對象,而我們的 java.util.Arrays.ArrayList正好也是它的一個子類
*/
@Test
public void test3() {
String attr[] = { "1", "2", "3" };
List<String> list = new ArrayList<String>(attr.length);
Collections.addAll(list, attr);
list.add("4");// 不會報錯
for (String s : list) {
System.out.println(s);// 1234
}
}
}

