【问题标题】:DataSerializable - serialize and deserialize two dimensional arraysDataSerializable - 序列化和反序列化二维数组
【发布时间】:2017-08-27 04:06:00
【问题描述】:

ObjectDataOutput接口中有writeDoubleArray等方法。当然数组可以是任何维度,在我的例子中,有一些二维双数组。如何序列化然后反序列化这些?或者可能是因为 Java 处理 2D 数组的方式(内存中不是真正连续的块),我需要将 2D 数组表示为 1D 数组?我的意思是因为性能我不应该真正序列化 2D 数组。只需将其包装到实用程序对象中并像这样存储...?

【问题讨论】:

    标签: arrays serialization deserialization hazelcast


    【解决方案1】:

    你必须自己先把其他维度,像下面的sn-p:

    public static class Foo implements DataSerializable {
    
        private double[][] multiDimArray;
    
        @Override
        public void writeData(ObjectDataOutput out)
                throws IOException {
    
            int firstDim = multiDimArray.length;
            out.writeInt(firstDim);
            for (int i = 0; i < firstDim; i++) {
                out.writeDoubleArray(multiDimArray[i]);
            }
        }
    
        @Override
        public void readData(ObjectDataInput in)
                throws IOException {
    
            int firstDim = in.readInt();
            multiDimArray = new double[firstDim][];
            for (int i = 0; i < firstDim; i++) {
                multiDimArray[i] = in.readDoubleArray();
            }
        }
    }
    

    这样就可以将任意深度的数组写入一个流。您也许可以将其抽象为两种方法(读/写),以便更轻松/更方便地使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-17
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2016-09-15
      • 2016-01-28
      相关资源
      最近更新 更多