我有一个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));
}
现在我如何为多个对象执行此操作,因为我不知道通过字节数组缓冲区初始化的长度?
答案 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;
}