【问题标题】:Java - Casting ArrayList<Object[]> to Object[][]?Java - 将 ArrayList<Object[]> 转换为 Object[][]?
【发布时间】:2013-07-18 21:22:58
【问题描述】:

好的,这是我面临的一个小问题 - Java 中是否有一种简单的转换方法

ArrayList<Object[]> array;

Object[][] data;

?

【问题讨论】:

  • 你为什么将 List 称为“数组”?
  • @Bohemian 它符合命名约定,并且是一个 array 列表。
  • 术语“演员”有特定的含义(嗯,实际上是 2 或 3),没有办法用“演员”做你想做的事。但是 toArray 应该可以工作。

标签: java arrays casting arraylist


【解决方案1】:
Object[][] data=array.toArray();

Object[] 的内部本身被视为一种对象。然后将它们放入自己的数组中,导致对象的数组对象数组,或者简单的二维数组。

【讨论】:

    【解决方案2】:

    铸造不是您正在寻找的解决方案。转换本质上允许您使用转换为特定类类型的方法。演员表示例:

    (((ClassA)classB).method())

    因此,可以将返回值放置在包含 method() 的实例化 classB 对象的 ClassA 对象内。

    另一方面,您想要做的是创建一个多维数组或二维数组。这本质上是一个数组数组,其中arrayA[i] = arrayB[];

    例如:

    Object[] objectArray = new Object[5];
    Object[][] = objectArray2D = new Object[][];
    
    objectArray2D[i] = objectArray;
    

    这里是你的问题的一点,如果你创建一个多维数组,为什么你只给它一个数组实例。本质上,您将在上面的示例中创建一个数组内的数组,并且由于您将只给它 1 个数组索引,因此数组内的所有对象的索引将与您拥有一个数组相同,但只有一个额外的安置。让我解释一下:

    objectArray[0] == 你放在objectArray第一个槽的对象

    而 objectArray2D[0][0] == 与 objectArray[0] 中的对象完全相同的对象

    对一个数组使用多维数组并没有带来任何好处。如果您要向二维数组询问索引 [1][0],您将收到越界异常。

    最后,我建议您创建一种特定形式的数组,例如 int[] 或 string[]。 Object[] 数组的问题在于,您可以将任何被认为是 Object 的内容存储到数组中,从而允许在一个数组中存在不同类型的对象的潜在集群。例如你可以有一个 objectArray[0] = int 1;和 objectArray[1] = 字符串一;除非您想非常具体地使用数组,否则最好使用一种 Object 类型作为数组。

    无论如何,做你想做的事情的最终解决方案如下:

    ArrayList<Object[]> array;
    Object[][] data;
    
    public void changeToAnArray(ArrayList<Object[]> array, Object[][] data)
    {
        this.array = array.toArray();
        this.data[0] = array;
    }
    

    还要注意 ArrayList 的要点,本质上是一个二维数组,而不必解析索引。

    请任何人随时纠正我在

    【讨论】:

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