当前页面: 开发资料首页 → J2SE 专题 → ArrayList-lt;String[]-gt;如何导出为String[][]?
ArrayList-lt;String[]-gt;如何导出为String[][]?
摘要: ArrayList-lt;String[]-gt;如何导出为String[][]?
import java.util.ArrayList;
public class atry {
public static void main(String[] args) {
ArrayList-#60;String[]-#62; b=new ArrayList-#60;String[]-#62;();
String[] a=new String[3];
a[0]=-#34;a0-#34;;a[1]=-#34;a1-#34;;a[2]=-#34;a2-#34;;
b.add(a);
a[0]=-#34;b0-#34;;a[1]=-#34;b1-#34;;a[2]=-#34;b2-#34;;
b.add(a);
String c[][];
c=b.toArray();
}
}
编译报错为:
atry.java:11: 不兼容的类型
找到:java.lang.Object[]
需要:java.lang.String[][]
c=b.toArray();
^
1 错误
请问,ArrayList-#60;String[]-#62;如何导出为String[][]?
c[]=(String[])b.toArray();
试试
c[]=(String[])b.toArray(); 也试过,不行
提示为:
atry.java:11: 不是语句
c[]=(String[])b.toArray();
^
atry.java:11: 需要-#39;;-#39;
c[]=(String[])b.toArray();
^
2 错误
c=(String[][])b.toArray();
试一下
toArray();返回 T[]类型,
你的ArrayList的模板参数T是String[]
.
返回当然是String[][],是正确的。
package test;
import java.util.ArrayList;
public class StringTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList-#60;String[]-#62; list = new ArrayList-#60;String[]-#62;();
String[] a = { -#34;aa-#34;, -#34;bb-#34;, -#34;cc-#34;, -#34;dd-#34; };
String[] b = { -#34;11-#34;, -#34;22-#34;, -#34;33-#34;, -#34;44-#34; };
list.add(a);
list.add(b);
String[][] c = new String[list.size()][];
list.toArray(c);
for (int i = 0; i -#60; c.length; i++) {
for (int j = 0; j -#60; c[i].length; j++) {
System.out.println(c[i][j]);
}
}
}
}
结果:
aa
bb
cc
dd
11
22
33
44
The type ArrayList is not generic; it cannot be parameterized with arguments -#60;String[]-#62;Syntax error, parameterized types are only available if source level is 5.0
为什么我编译出这么个错误啊?
用楼上的代码编译的
jdk版本?
JDK 1.5.08
不知道为啥。。我的是1.5.0_02
谢谢大家的热心帮助,Areslp(努力ING)的答案显然正确.
String[][] c = new String[list.size()][];这句的确在关键了!
汗...没用过JDK1.5