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]
时间: 2024-10-23 04:46:40