我想把List转换成一个String数组.
看接口 List下有这个方法:可以指定数组的运行时类型
toArray
<T> T[] toArray(T[] a)
List<String> al = new ArrayList<String>();
al.add("a1");
al.add("a2");
String[] str = (String[])al.toArray();
for(String s : str) {
System.out.println(s);
}
结果:ClassCastException异常
请教前辈,这个方法怎么用呢?我不想用List下的"Object[] toArray()"方法呢...
看接口 List下有这个方法:可以指定数组的运行时类型
toArray
<T> T[] toArray(T[] a)
List<String> al = new ArrayList<String>();
al.add("a1");
al.add("a2");
String[] str = (String[])al.toArray();
for(String s : str) {
System.out.println(s);
}
结果:ClassCastException异常
请教前辈,这个方法怎么用呢?我不想用List下的"Object[] toArray()"方法呢...
a.add("a");
a.add("b");
String[] b=new String[a.size()];
a.toArray(b);
System.out.println(b[0]);
不能直接强制转换
al.add("a1");
al.add("a2");
String[] str = (String[]) al.toArray(new String[al.size()]);
for(String s : str) {
System.out.println(s);
}
import java.util.*;public class Arr{
public static void main(String args[]){
ArrayList<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc"); System.out.println(Arrays.toString(list.toArray(new String[]{})));
}
}
String str[] = list.toArray(new String[]{});
List<String> al = new ArrayList<String>();
al.add("a1");
al.add("a2");
String[] toBeStored = new String[al.size()];
al.toArray(toBeStored);
for (String s : toBeStored) {
System.out.println(s);
}
或
List<String> al = new ArrayList<String>();
al.add("a1");
al.add("a2");
String[] toBeStored = new String[]{};
String[] str = al.toArray(toBeStored);
for (String s : str) {
System.out.println(s);
}
Object[] obj = al.toArray();
for(Object o : obj) {
System.out.println(o);
}
这个Object数组,不先分配空间也没事呢?
帖子20分太少了,先谢谢大家了!!
这个也没先分配空间吧,看看api doc吧至于那个Object[],返回的是引用,没必要分配,分配了也没用