Подтвердить что ты не робот

Сериализация Java многомерного массива

Можно ли сделать 2D-массив в java serializable?

Если нет, я хочу "перевести" 2D-массив 3x3 в вектор векторов.

Я играю с векторами, и я до сих пор не знаю, как это представить. Кто-нибудь может мне помочь?

Спасибо!

4b9b3361

Ответ 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