集合数组转化asList和toArray方法的使用
集合与数组各有优势。为了将数组集合相互转化,这里介绍Arrays中的aslist()和ArrayList中toArray()方法和一些注意事项。
数组转集合用到的是Arrays中的aslist()方法
import java.util.Arrays;
import java.util.List;
String[] arr = {"a","b","c"};
List<String> list = Arrays.asList(arr);//数组转集合
System.out.println(list);
这里的输出就是[a,b,c]了。但是值得一提的是,集合相对于数组的一大特点就是长度是可变的,那么我们是否可以用add方法来增加元素呢?
list.add("d");
这时程序便报错了,因此将数组转换成集合后,不能进行增的操作,但是可以通过索引来查找元素。
再来试试int类型的数组转集合吧
int[] arr = {1,2,3,4,5};
List<int[]> list = Arrays.asList(arr);
System.out.println(list);
我们想要的输出是[1,2,3,4,5],但是输出的是地址值[[I@646007f4]
,原因是把整个数组当成一个对象了,因此在数组转集合时,传给list的一般都是引用数据类型。
Integer[] arr = {1,2,3,4,5};
List<Integer> list = Arrays.asList(arr);
System.out.println(list);
这时便得到了[1,2,3,4,5]
集合转数组用到的是ArrayList中toArray()方法
import java.util.ArrayList;
import java.util.List;
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
String[] arr = list.toArray(new String[0]);
for (String string : arr) {
System.out.print(string);
}
给String[0]的原因是,数组的长度小于集合的size时,转换后的数组自动变成集合的size