java中字符串到矩阵字符串的对象矩阵

时间:2011-07-13 08:28:52

标签: java matrix

我是java编程和Object矩阵的新手,我可以用这种方式使用两个for循环轻松地转换

String[][] data = new String[objData.length][objData[0].length];
for (int nRow = 0; nRow < objData.length; nRow++){
    for (int nCol = 0; nCol < objData[0].length; nCol++){
    data[nRow][nCol] = (String) objData[nRow][nCol];
    }
}

我想知道它是否可以以更好的方式编程。我试图使用Arrays.copyOf或类似的东西,比如这个

String[][] data = Arrays.copyOf(objData, objData.length*objData[0].length, String[][].class);

但这给了我一个例外......

at java.util.Arrays.copyOf(Unknown Source)

提前致谢!

2 个答案:

答案 0 :(得分:1)

复制比for(()循环编码更有效的数组的唯一方法是System.arraycopy()。它使用低级调用 - 比如C中的memcopy。如果传递正确的参数,它应该适合你。

但是,我想向你推荐一些东西。不要创造如此难以理解的结构。我可能在java 2中创建了2维数组,在过去12年中创建了3次。如果您的数据是复杂的,则创建包含此数据的类,然后创建包含此类元素的集合或数组。

答案 1 :(得分:0)

如果源和目标数组的类型不同,那么您的代码是正确的方法:创建一个新的目标数组,然后将所有项目从源数组复制并转换为目标单元格。

其他方法(如Array.copyof())也会做同样的事情,可能会稍快一些,因为它们可能会在本机代码中实现其例程。但在所有情况下,复杂性都是O(m*n)

整理代码:在一些实用程序类中使用静态辅助方法移动算法,例如

 public static String[][] convertToStringMatrix(Object[][] source) { ... }