数组和list之间的相互转换
数组和list之间的相互转换
- 数组转list
- 遍历
- Arrays.asList()方法(有局限)
- Collections.addAll()
- java8 stream流
- list转数组
- toArray()
- toArray(T[] a)(推荐)
数组转list
注意:
在数组转list过程中,如果数组是8大基本数据类型,将数据类型转为对应的封装类,避免转换为list后存储元素是数组而不是数组的元素。
遍历
int[] arr = {2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
ArrayList<Object> list = new ArrayList<>();
for (int arry:arr) {
list.add(arry);
}
Arrays.asList()方法(有局限)
数组如果是原始数据类型,需要转为封装类,如int 转为Integer
如果使用原始数据类型直接使用,输出的是地址,因为list集合存放的是数组
int[] arr = {
2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
//集合封装的是int[]
List<int[]> ints = Arrays.asList(arr);
Arrays.asList(arr).forEach(System.out::println);
Integer[] arr = {
2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
//集合封装的是Integer
List<Integer> integers = Arrays.asList(arr);
Arrays.asList(arr).forEach(System.out::println);
还有需要注意的是:
Integer[] arr = {
2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
List<Integer> integers = Arrays.asList(arr);
integers.add(55);
Arrays.asList(arr).forEach(System.out::println);
通过 Arrays.asList() 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。
Collections.addAll()
Integer[] arr = {
2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
ArrayList<Object> list = new ArrayList<>(arr.length);
Collections.addAll(list,arr);
list.add("ss");
list.forEach(System.out::println);
java8 stream流
可以使用流stream来将下列3种数组快速转为List,分别是int[]、long[]、double[],其他short[]、byte[]、char[],在JDK1.8中暂不支持。
Integer[] arr = {
2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
List<Integer> collect = Arrays.stream(arr).collect(Collectors.toList());
collect.forEach(System.out::println);
list转数组
toArray()
直接使用toArray()不带参方法但是其返回值类型为Object,在进行强转的时候会报出java.lang.ClassCastException类转换异常
ArrayList<String> list = new ArrayList<>();
list.add("q");
String[] objects = (String[])list.toArray();
for (String object : objects) {
System.out.println(object);
}
如果换成Object则没问题
ArrayList<String> list = new ArrayList<>();
list.add("q");
Object[] objects = list.toArray();
for (Object object : objects) {
System.out.println(object);
}
toArray(T[] a)(推荐)
ArrayList<String> list = new ArrayList<>();
list.add("q");
String[] strings = new String[list.size()];
String[] strings1 = list.toArray(strings);
System.out.println(Arrays.toString(strings1));
还没有评论,来说两句吧...