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

时间:2015-03-11 22:10:43

标签: java android arrays serialization arraylist

我有一个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));
}

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

2 个答案:

答案 0 :(得分:1)

如果您真的希望将其转换为单个字节[] juste,请使用ByteArrayOutputStream并根据需要调用相应的函数。

虽然您还需要考虑再次将此字节[]转换为正确的列表。

答案 1 :(得分:0)

预分配数组

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;
}

Concat到最终缓冲区“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;
}