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
System.out.println("- - - - - - - - - - -");
int i[]={11,22,33};
List intList=Arrays.asList(i); //intList中就有一個Integer數組類型的對象,整個數組作為一個元素存進去的
for(Object o:intList){//就一個元素
System.out.println(o.toString());
}
System.out.println("- - - - - - - - - - -");
Integer ob[]={11,22,33};
List<Integer> objList=Arrays.asList(ob); //數組里的每一個元素都是作為list中的一個元素
for(int a:objList){
System.out.println(a);
}
System.out.println("- - - - - - - - - - -");
//objList.remove(0);//asList()返回的是arrays中私有的終極ArrayList類型,它有set,get,contains方法,但沒有增加和刪除元素的方法,所以大小固定,會報錯
//objList.add(0);//由於asList返回的list的實現類中無add方法,所以會報錯
輸出結果:
- aa
- bb
- cc
- 3
- - - - - - - - - - - -
- [I@287efdd8
- - - - - - - - - - - -
- 11
- 22
- 33
- - - - - - - - - - - -
如果想根據數組得到一個新的正常的list,當然可以循環一個一個添加,也可以才有以下2個種方法:
ArrayList<Integer> copyArrays=new ArrayList<Integer>(Arrays.asList(ob));//這樣就是得到一個新的list,可對其進行add,remove了
copyArrays.add(222);//正常,不會報錯
Collections.addAll(new ArrayList<Integer>(5), ob);//或者新建一個空的list,把要轉換的數組用Collections.addAll添加進去
另外討論下Collections.addAll和list.addAll
List<Integer> list1 = new ArrayList<Integer>() {{add(0); add(-1);}};
List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(2, 4, -9));
list1.addAll(list2);
System.out.println(list1);
list2.set(0, 100000);
System.out.println(list1);//深復制
System.out.println();
//功能性展示
Collections.addAll(list2, 34, 67, 78);
System.out.println(list2);
list2.addAll(Arrays.asList(34, 67, 78));
System.out.println(list2);
System.out.println();
結果:
[0, -1, 2, 4, -9]
[0, -1, 2, 4, -9]
[100000, 4, -9, 34, 67, 78]
[100000, 4, -9, 34, 67, 78, 34, 67, 78]