将ArrayList <String>转换为String []数组
这个问题在这里已经有了答案:
像这样使用。
List<String> stockList = new ArrayList<String>();
stockList.add("stock1");
stockList.add("stock2");
String[] stockArr = new String[stockList.size()];
stockArr = stockList.toArray(stockArr);
for(String s : stockArr)
System.out.println(s);
尝试这个
String[] arr = list.toArray(new String[list.size()]);
发生的事情是, stock_list.toArray()
创建一个Object[]
而不是String[]
,因此类型转换失败1。
正确的代码是:
String [] stockArr = stockList.toArray(new String[stockList.size()]);
甚至
String [] stockArr = stockList.toArray(new String[0]);
(令人惊讶的是,最近的Java版本后者版本更快:请参阅https://stackoverflow.com/a/4042464/139985)
有关更多详细信息,请参阅List.toArray
的两个重载的List.toArray
。
(从技术角度来看,此API行为/设计的原因是List<T>.toArray()
方法的实现没有关于<T>
在运行时的信息,它只知道原始元素类型是Object
;相反,在另一种情况下,数组参数给出了数组的基类型(如果提供的数组足够大,则使用它,否则将使用相同类型和更大尺寸的新数组作为结果分配并返回。)
1 - 在Java中, Object[]
与String[]
不是兼容的。 如果是这样,那么你可以这样做:
Object[] objects = new Object[]{new Cat("fluffy")};
Dog[] dogs = (Dog[]) objects;
Dog d = dogs[0]; // Huh???
这显然是无意义的,这就是为什么数组类型通常不兼容分配的原因。
链接地址: http://www.djcxy.com/p/3365.html