Collection是一个接口的名字,定义了集合类型的共同特征。而Collections是一个类的名字,是集合类型的工具类,类中定义了大量的静态方法,能够操作集合对象。 集合和数组有很多共同的地方,二者都是作为数据容器使用, 用来临时存储数据。数组的长度是固定的,集合的长度却可以动态扩展,数组由于可以直接通过索引操作其元素,所以性能和效率较高。实际应用中,可能使用及合作为临时变量持有数据,却将处理结果转换成数组返回。
数组和集合相互转换:
Collection接口中定义了toArray(T[] a)方法来将集合转换为数组,其中T是泛型类型。
Arrays工具类中提供了asList()方法 → Arrays.asList(arr);
基本类型数组不能直接转化为集合(Arrays.asList(arr)),须将基本类型数组转化为包装类
//基本类型的数据,会将数据作为一个对象存放到List中
int[] array = new int[]{1, 2, 3};
List<int[]> list = Arrays.asList(array);
System.out.println("转化后的集合的大小---》"+list.size());
list.forEach(s->System.out.println("集合中的内容---》"+s));
输出值:
转化后的集合的大小---》1
集合中的内容---》[I@649d209a (此处是数组,将数组作为一个对象存入到List)
//基本类型的包装类或者对象可以装数组转化成集合
Integer[] array = new Integer[]{1, 2, 3};
List<Integer> list = Arrays.asList(array);
System.out.println("包装类转化后的集合的大小---》"+list.size());
list.forEach(s->System.out.println("包装类集合中的内容---》"+s));
输出结果:
包装类转化后的集合的大小---》3
包装类集合中的内容---》1
包装类集合中的内容---》2
包装类集合中的内容---》3
//集合转数组
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Integer[] array = list.toArray(new Integer[list.size()]);
System.out.println("数组的大小:"+array.length);
Arrays.stream(array).forEach(s-> System.out.println(s));
输出结果
数组的大小:3
1
2
3