collection.toArray()是旧式的获得对象数组的方法。
在java5引入泛型之前,这是唯一的获得对象数组的方法。
附注:toArray(T[] a)是Java5 引入泛型模板机制后的新调用方法。区别就是明确了类型。如果Collection在创建时明确了类型,比如Collection<String>,这里的方法也有了相应的类型。编译器可以检测到类型错误。
代码示例:
public class RandomTeacher {
private static String[] getRandomteachers(String[] teachers, int n) {
Vector<String> vName = new Vector<String>();
for (int i = 0; i < n; i++) {
while (true) {
Random random = new Random();
int index = random.nextInt(teachers.length - 1);
if (vName.contains(teachers[index]) == false) {
vName.add(teachers[index]);
break;
}
}
}
//1.
// return vName.toArray(new String[1]);//以空数组作为参数
//2.
// String [] choosedTeacher = new String[3];//当空间不够用时,toArray(T[] a)会自动分配一个新的数组
// vName.toArray(choosedTeacher);
//3.姑且认为是最好的。
return vName.toArray(new String[vName.size()]);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String teachers[] = { "张", "赵", "刘", "钱", "孙", "李", "周", "吴", "郑", "王" };
String[] choosedTeachers = RandomTeacher.getRandomteachers(teachers, 5);
for (int i = 0; i < choosedTeachers.length; i++)
System.out.println("teacher " + (i + 1) + " : "+ choosedTeachers[i]);
}
}