【问题标题】:How to turn an ArrayList with Object[]'s into an Object[][] array? [duplicate]如何将带有 Object[] 的 ArrayList 转换为 Object[][] 数组? [复制]
【发布时间】:2013-06-16 16:49:53
【问题描述】:

我有一个带有Object[]ArrayList,我需要将ArrayList 转换为Object[][] 数组,以便将数据放入JTable。我该怎么做?

我试过了:

(Object[][]) arraylist.toArray();

但这给了:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[Ljava.lang.Object;

【问题讨论】:

    标签: java arrays arraylist


    【解决方案1】:

    你可以使用toArray,像这样:

    Object[][] array2d = (Object[][])arraylist.toArray(new Object[arraylist.size()][]);
    

    这是一个非通用版本; generic toArray(T[] a) 让你避免演员阵容。

    【讨论】:

    • 根据 Netbeans 给出的是 Object[] 而不是 Object[][]
    • @com.BOY 看起来你有一个非通用列表 - 你需要添加一个演员。
    【解决方案2】:

    试试这个,一个考虑到可变长度数组的显式解决方案:

    ArrayList<Object[]> input = new ArrayList<>();
    Object[][] output = new Object[input.size()][];
    
    for (int i = 0; i < input.size(); i++) {
        Object[] array = input.get(i);
        output[i] = new Object[array.length];
        System.arraycopy(array, 0, output[i], 0, array.length);
    }
    

    【讨论】:

    • 可以使用System.arraycopy(array, 0, output[i], 0, array.length);代替第二个for循环
    • @BackSlash 是的,这样更好。已编辑!
    【解决方案3】:
        List<Object[]> list = new ArrayList();
        list.add(new Object[]{1,2,3});
    
        Object[][] objArray = new Object[list.size()][];
        for (int i=0;i<objArray.length;i++)
            objArray[i] = list.get(i).clone();
    

    【讨论】:

      猜你喜欢
      • 2014-05-09
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      相关资源
      最近更新 更多