将 arraylist 中的所有对象转换为 java 中的字节数组

Converting all objects in arraylist to byte array in java

我有一个包含数据的 ArrayList,它是我自己的自定义对象,我需要将它们全部转换为字节数组。我可以通过序列化将对象转换为字节数组,但我需要将所有对象序列化为一个数组。

ArrayList<MyObject> myArrayList = new ArrayList<MyObject>();
// Getting a list of objects of database (any unknown number)
for(int counter = 0; counter < myObj.size(); counter++) {
    byte[] myData = serialize(myObj.get(counter));
}

现在我该如何为多个对象执行此操作,因为我不知道字节数组缓冲区要初始化的长度?

如果您确实希望将其转换为单个字节[],只需使用 ByteArrayOutputStream 并根据需要调用适当的函数。

虽然你也需要考虑把这个byte[]重新变成一个合适的List。

预分配一个数组

byte[][] data = new byte[myObj.size()][];
long size = 0;

生成字节

for(int counter = 0; counter < myObj.size(); counter++) {
    data[counter] = serialize(myObj.get(counter));
    size += data[counter].length;
}

连接到最终缓冲区 "allData":

byte[] allData = new byte[size];
long curs = 0;
for(int i = 0; i < data.length; i++) {
    int length = data[i].length;
    System.arraycopy(data[i], 0, allData, curs, length);
    curs += length;
}