Сериализация Java многомерного массива Можно ли сделать 2D-массив в java serializable? Если нет, я хочу "перевести" 2D-массив 3x3 в вектор векторов. Я играю с векторами, и я до сих пор не знаю, как это представить. Кто-нибудь может мне помочь? Спасибо! Ответ 1 Массивы в Java сериализуемы - поэтому массивы массивов также сериализуемы. Объекты, которые они содержат, могут быть не такими, поэтому убедитесь, что содержимое массива сериализуемо - если нет, сделайте так. Вот пример, используя массивы ints. 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
Ответ 1 Массивы в Java сериализуемы - поэтому массивы массивов также сериализуемы. Объекты, которые они содержат, могут быть не такими, поэтому убедитесь, что содержимое массива сериализуемо - если нет, сделайте так. Вот пример, используя массивы ints. 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