一、Arrays中的方法
1、toString():将数组变为字符串
原来的方法:建立StringBilder容器,将数组中的元素添加至该容器中,形成字符串!
现在的方法:直接调用Arrays中的toString方法,将数组变为字符串:
如代码:
int[] arr={2 ,3, 4};
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(Arrays.toString(arr));
结果为:
把数组变成list集合有什么好处?
可以使用集合的思想和方法来操作数组中的元素。
注意1:将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定。
如 :contains。
get
indexOf()
subList();
如果增删。那么会反生UnsupportedOperationException,
String[] arr3={"abc","def","ghi"};
List<String> L4=Arrays.asList(arr3);
System.out.println(L4);
结果为:
注意2:如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
如代码:
int[] arr={2 ,3, 4};
List L1=Arrays.asList(arr);
System.out.println(L1);
List<int []> L2=Arrays.asList(arr);
System.out.println(L2);
Integer[] arr2={2,3,4};
List<Integer> L3=Arrays.asList(arr2);
System.out.println(L3);
结果为:
即在int[] 型数组中,转为List集合后,因为int为基本数据类型,所以将该数组作为集合元素传递进来,即只传了一个元素,即int[]元素。
但是Integer[]型数组中,其数组中的元素均为对象,所以变成集合时,数据中的元素直接转成集合中的元素,即Integer类型。
二、Collections中的toArray():将集合转为数组
1、指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
所以创建一个刚刚好的数组最优。
2、为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。
String[] arr3={"abc","def","ghi"};
List<String> L4=Arrays.asList(arr3); //数组转集合
System.out.println(L4);
//集合转数组
String[] arr4=L4.toArray(new String[0]); //所开辟空间不足
System.out.println(Arrays.toString(arr4));
String[] arr5=L4.toArray(new String[5]); //会开辟额外的空间
System.out.println(Arrays.toString(arr5));
String[] arr6=L4.toArray(new String[L4.size()]);//最合适的做法
System.out.println(Arrays.toString(arr6));
结果如下: