天天看點

Java Arrays.asList 數組轉list

String s[] = {"aa","bb","cc"};  
List<String> sList = Arrays.asList(s);  
for(String str:sList){ // 能周遊出各個元素  
    System.out.println(str);  
}  
System.out.println(sList.size()); // 為3  

int i[] = {,,};  
List intList = Arrays.asList(i); // intList中就一個Integer數組類型的對象,整個數組作為一個元素存進去的  
for(Object o : intList){ // 就一個元素  
    System.out.println(o.toString());  
}  

Integer ob[]={,,};  
List<Integer> objList = Arrays.asList(ob); // 數組裡的每一個元素都是作為list中的一個元素  
for(int a:objList){  
    System.out.println(a);  
}  

/*
aa  
bb  
cc  
3  
- - - - - - - - - - -  
[[email protected]  
- - - - - - - - - - -  
11  
22  
33  
*/
           

Arrays.asList(),将一個數組轉化為一個List對象,這個方法會傳回一個ArrayList類型的對象, 這個ArrayList類并非java.util.ArrayList類,而是Arrays類的内部類Arrays.ArrayList,用這個對象對清單進行添加删除操作,就會抛出UnsupportedOperationException異常,因為在Arrays.ArrayList内部中,仍是一個定長數組。

// Arrays.ArrayList内部類中:

private final E[] a;

ArrayList(E[] array) {
    a = Objects.requireNonNull(array);
}
           
// asList()
public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}
           
  • 如果想根據數組得到一個新的 正常的 list,可以循環一個一個添加,也可以:
// 方法1
// java.util.ArrayList
ArrayList<Integer> copyArr = new ArrayList<Integer>(Arrays.asList(ob)); //這樣就得到一個新的list,可對其進行add,remove了  
copyArr.add(); // 正常,不會報錯
           
// 方法2
ArrayList<Integer> copyArr = new ArrayList<Integer>();
Collections.addAll(copyArr, ob); // 或者建立一個空的list,把要轉換的數組用Collections.addAll添加進去
           
  • 如果想将基本類型的數組如int[], long[]用asList轉成list,那麼我們可以選擇用apache commons-lang工具包裡的數組工具類ArrayUtils類的toObject()方法,非常友善,如下:
Java Arrays.asList 數組轉list

轉自:Java我人生(陳磊興)http://blog.csdn.net/chenleixing/article/details/43775127