2009-09-23 43 views
12

是否有可能在java可序列化中制作二维数组?多维数组的Java序列化

如果不是,我正在寻找“翻译”一个3x3二维数组成矢量矢量。

我一直在玩矢量,我仍然不确定如何表现。谁能帮我?

谢谢!

回答

18

Java中的数组是可序列化的 - 因此数组的数组也是可序列化的。

但是,它们包含的对象可能不是,所以请检查数组的内容是否可序列化 - 如果没有,请将其设置为如此。

下面是一个使用int数组的示例。

public static void main(String[] args) { 

    int[][] twoD = new int[][] { new int[] { 1, 2 }, 
      new int[] { 3, 4 } }; 

    int[][] newTwoD = null; // will deserialize to this 

    System.out.println("Before serialization"); 
    for (int[] arr : twoD) { 
     for (int val : arr) { 
      System.out.println(val); 
     } 
    } 

    try { 
     FileOutputStream fos = new FileOutputStream("test.dat"); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(twoD); 

     FileInputStream fis = new FileInputStream("test.dat"); 
     ObjectInputStream iis = new ObjectInputStream(fis); 
     newTwoD = (int[][]) iis.readObject(); 

    } catch (Exception e) { 

    } 

    System.out.println("After serialization"); 
    for (int[] arr : newTwoD) { 
     for (int val : arr) { 
      System.out.println(val); 
     } 
    } 
} 

输出:

Before serialization 
1 
2 
3 
4 
After serialization 
1 
2 
3 
4 
+0

嗯,还好。我的多维数组只包含整数,但我很高兴知道数组本身确实是可序列化的,谢谢... – littleK 2009-09-23 16:44:29

+0

适用于我的整数 - 不确定为什么看到问题。祝你好运! – Brabster 2009-09-23 17:01:03