Note that instead of creating objects and then serializing them back to bytes, it would be better to have a way of just building the array from the bytes of the children directly. For example, you could use a ByteArrayOutputStream to put all the bytes in, keeping track of the offsets as required by your serialized array format. Then you could create the bytes of your serialized array from this info. What ever you can do to minimize the number of byte copies and allocations is better - just like with HBase.