java - 将 ArrayList<String[]> 转换为 String[][] 或 Object[][]

标签 java arrays arraylist classcastexception

我想动态生成一个固定大小的 String[] 数组(String[][] 对象),填充为 w。来自数据库的行值字符串,用于创建 JTable。

为此,我使用了 String[] 的 ArrayList,动态填充它。然后使用list.toArray()将其转换为Array。 但 .toArray() 仅将列表转换为单维数组 Object[] 或 T[]。

我需要 String[][]/Object[][] 才能使用 JTable 构造函数。

代码

Object[][] dlist = (Object[][]) al.toArray();

生成:java.lang.ClassCastException:[Ljava.lang.Object;无法转换为 [[Ljava.lang.Object;

ers = pdao.getEmployeeResultSet(prs.getInt("PROJ_ID"));
ArrayList<String[]> alist = new ArrayList<String[]>();
while (ers.next()){
    String eid = ers.getString("EMP_ID");
    String ename = ers.getString("EMP_NAME");
    String gend = ers.getString("GENDER");
    String bd = ers.getString("BIRTHDATE");
    String addr = ers.getString("ADDRESS");
    String city = ers.getString("City");

    String[] str = {eid, ename, gend, bd, addr, city};
    alist.add(str);
}
Object[][] dlist = (Object[][]) al.toArray();
String[] cnames = {"EMP_ID","EMP_NAME","GENDER","BIRTHDATE","Address","City"};

jtable = new JTable(dlist, cnames);

我使用了教程:http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/components/SimpleTableDemoProject/src/components/SimpleTableDemo.java创建 JTable。

最佳答案

简单地使用

String[][] dlist = alist.toArray(new String[][]{});

如果您知道大小(使用 alist.size() 执行此操作),您传递给该方法的数组也可以用作将返回的实际数组,但这确实很有用您想要的数组类型。

您实际上可以通过以下方式确认这一点

String[][] holder = new String[alist.size()][];
String[][] returned = alist.toArray(holder);
System.out.println(holder == returned);

将打印

true

现在,显然,由于数组是协变的,你也可以这样做

Object[][] dlist = al.toArray(holder);

关于java - 将 ArrayList<String[]> 转换为 String[][] 或 Object[][],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22852644/

相关文章:

java - Tomcat 8 和 Spring Security Cors

java - 运行时的引用类型

c - 使用 malloc 扩展数组

java - 如何使用Java将数据从一个ArrayList添加到另一个ArrayList?

Java - 如何从句子的ArrayList中获取每个单词

java - 如何从对象列表中提取元素并将其存储在字符串数组中

java - 在 REST 端点中流式传输 Kafka 消息

java - 打印出数组中最少出现的元素

JavaScript 二维数组未定义

java - 在我的 for 循环中获取 ArrayOutofBoundsException