日期:2014-05-20  浏览次数:20603 次

ArrayList 的 toArray 类型转换
有一个方法得到Integer类型的集合list

现要转为 String[],

String[] ids = (String[]) list.toArray(new String[0]);

报类型转换错误,

toArray能实现类型转换吗
还是只能用笨方法for 赋值给 数组

------解决方案--------------------
toArray是把list转为 Object[] 当然可以了 你把报错贴出来看看
------解决方案--------------------
List<Integer> list = new ArrayList<Integer>();
list.add(1); list.add(2); list.add(3); list.add(4);
String temp = Arrays.toString(list.toArray());
String tempStr = temp.substring(1, temp.length() - 1);
String []buf = tempStr.split(",[ ]");
for(String tem : buf) {
System.out.print(tem);
}
结果(最终存放在buf数组里面):
1234

-------------------------------------------
 list.toArray(new String[0])
要求list中的类型必须与转化的类型一致。也就是说。你List里面存放的Integer,那么你只能转化为Integer.
我刚刚在网上看了一下。只能使用笨方法,也就是循环转化为string。

我给你写了一个。利用现有的类库以及正则表达式。给转了一下。

------解决方案--------------------
这样转换肯定会出粗,建议用toString()方法
------解决方案--------------------
toArray是把list转为 Object[] 然后使用for循环强制转换每一个元素成string
------解决方案--------------------
list 里的元素是Integer,不能转换成 String 数组,这很合多态的原理,因为Integer和String之间没有继承关系

就象一个笼子里(ArrayList)关着一群猪(Integer),你希望他们放出来的时候变成一群牛(String),这可能吗?
------解决方案--------------------
String[] ids = (String[]) list.toArray(new String[0]);
要求转换后的数组类型应为list中更元素的超类。
String类型显然不是Integer的超类,所以不能直接转。