我有一些非常大的整数数组,我想压缩它们。
然而,在java中做到这一点的方法是使用类似这样的东西 -
int[] myIntArray;
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new DeflaterOutputStream(byteArrayOutputStream));
objectOutputStream.writeObject(myIntArray);
注意,int数组首先需要通过java转换为bytes。 现在我知道这很快,但它仍然需要创建一个全新的字节数组并扫描整个原始 int 数组,将其转换为字节并将值复制到新的字节数组。
有什么方法可以跳过字节转换并使其立即压缩整数吗?
最佳答案
跳过ObjectOutputStream
,直接将int
存储为每个字节
。例如,DataOutputStream.writeInt
就是一种简单的方法。
关于java - 在java中压缩整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1081063/