我有一个
List<ArrayList> arg = new ArrayList<ArrayList>();
与
[[logo], [cd_branche], [lib_branche]],
(other arguments not relevant)
[[1111,22222,3333]],[[2222,324,432]]...
我想将其转换为String [],所以我做到了
Object[] obj = arg.toArray();
String[] headers =new String[obj.length];
for(int i=0;i<headers.length;i++) {
headers[i]= (String) obj[i];
}
但我越来越
java.util.ArrayList cannot be cast to java.lang.String
我正在寻找的输出是
headers[0]=logo
headers[1]=cd_branche
headers[2]=lib_branche
使用Java 6
最佳答案
听起来您希望它是一个字符串数组(即"[["logo", "cd_branche", "lib_cranche"],[..],[..],[1111,22222,3333],[2222,324,432]"
)。
在这种情况下,只需执行以下操作:
Object[] obj = arg.toArray();
String[] headers =new String[obj.length];
for(int i=0;i<headers.length;i++) {
headers[i]= Arrays.toString(obj);
}
并且
obj
中的每个ArrayList对象都将以字符串数组格式返回。更新:由于您希望将其作为平面数组,因此需要(a)计算所需数组的大小,以及(b)通过两个循环遍历对象,并进行如下深度搜索:
int size = 0;
for (int i = 0; i < arg.size(); size += arg.get(i++).size());
String[] headers =new String[size];
for(int count = 0, i=0;i<arg.size();i++) {
for (int j=0; j< arg.get(i).size(); j++) {
headers[count++]= arg.get(i).get(j).toString();
}
}