目录
1、Collection方法
1.1、方法概述
Collection作为集合顶层接口,主要包含增(add())、删(remove)、查(iterator)、包(contains)、空(isEmpty)、数(size())、清(clear)等方法。
注意:Collection中没有修改方法,修改方法需要索引,是在List中实现的。
1.2、方法详解
1.3、Collection的toArray()方法
toArray() 将单列集合转为数组的方法。
public Object[] toArray();
public <T> T[] toArray(T[] a);
toArray() 最大的问题是转换后的数据类型是 Object[],当需要使用具体数据类型如String[]时会有问题。java的Object数组不能转换成为String[]数组,这就说明你要转换的数组它本身是Object类型的数组,但是你却非要把它转换为String类的数组,这当然是错误的。
[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
public class TestCollectionUtils {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("a");
c.add("b");
c.add("c");
//[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
// String[] str = (String[])c.toArray();
//
// Object[] objects = c.toArray();
//[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
// String[] strings = (String[])objects;
//正确做法
Object[] objects = c.toArray();
String[] strings = Arrays.copyOf(objects, objects.length, String[].class);
System.out.println(Arrays.toString(strings));//[a, b, c]
}
}
public <T> T[] toArray(T[] a)的使用
在toArray参数中直接确定使用什么数据类型来接受,T代表数据类型,[]代表的是数组,即在toArray()方法中传入一个具体数据类型的数组即可。直接返回的就是具体数据类型的数组对象。
长度定义方式一:直接给0即new String[0],如果长度不够,系统会自动加长度,这样就消耗了系统的资源。
长度定义方式二:长度给的过长,但是这些多余的长度还在系统中存在,就形成了一个内存的浪费
长度定义方式三:就是在定义String[]数组的时候,使用集合的长度来定义数组的长度,因为集合的长度已经定了,其元素的个数也已经定了。
2、Collection特性