在Java中为对象实现内存中压缩
问题内容:
我们有一个用例,我们想压缩和存储对象(内存中),并在需要时解压缩它们。
我们想要压缩的数据变化很大,从浮点向量到字符串再到日期。
有人可以建议使用任何好的压缩技术吗?
我们将压缩的难易程度和减压速度视为最重要的因素。
谢谢。
问题答案:
如果要压缩实例,MyObject
可以实现它Serializable
,然后将对象流式传输到压缩的字节数组中,如下所示:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzipOut = new GZIPOutputStream(baos);
ObjectOutputStream objectOut = new ObjectOutputStream(gzipOut);
objectOut.writeObject(myObj1);
objectOut.writeObject(myObj2);
objectOut.close();
byte[] bytes = baos.toByteArray();
然后解压缩byte[]
到对象中:
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
GZIPInputStream gzipIn = new GZIPInputStream(bais);
ObjectInputStream objectIn = new ObjectInputStream(gzipIn);
MyObject myObj1 = (MyObject) objectIn.readObject();
MyObject myObj2 = (MyObject) objectIn.readObject();
objectIn.close();