Java压缩集合库

Java压缩集合库,java,collections,compression,Java,Collections,Compression,是否有Java第三方库提供压缩其组成对象的集合?我在谷歌上搜索,结果一无所获。这样的构造对于大型(读取多gig)地图或类似的东西不是很有用吗?当然,访问和存储会带来性能损失,但对于长期存在的不经常访问的引用,这似乎是合理的,不是吗?这方面的用例基本上都是内存数据库的用例,所以您可能应该研究一下它们 如果要这样做,可能需要将任意java对象序列化为字节,然后将它们反射回类中。也可以使用内存中的数据库——反正我看不出有什么真正的区别,只是java对于这类东西来说可能有点高级 请注意,这实际上是jav

是否有Java第三方库提供压缩其组成对象的集合?我在谷歌上搜索,结果一无所获。这样的构造对于大型(读取多gig)地图或类似的东西不是很有用吗?当然,访问和存储会带来性能损失,但对于长期存在的不经常访问的引用,这似乎是合理的,不是吗?

这方面的用例基本上都是内存数据库的用例,所以您可能应该研究一下它们

如果要这样做,可能需要将任意java对象序列化为字节,然后将它们反射回类中。也可以使用内存中的数据库——反正我看不出有什么真正的区别,只是java对于这类东西来说可能有点高级


请注意,这实际上是java特有的-可能是在C中,您可以有一个库,它可以获取内存并压缩它,而不必做任何花哨的事情,但由于Java无法访问内存,这使得这类事情变得有点困难……

MapDB显然实现了Java集合样式的映射,并且可以执行“透明压缩”(请参阅)


我认为它是为磁盘存储或堆外存储而设计的(请参阅),因此您可以在磁盘块或非垃圾收集内存块之间进行选择。

不太可能-这种收集在大多数情况下都不是很有用

数据结构通常被设计为针对一组特定的使用模式提供高性能。增加压缩只会增加开销,并降低它们在主要用例中的运行速度。特别要注意的是,最有效的压缩算法使用对以前看到的数据的反向引用。这通常与集合类预期的随机访问模式不兼容(即不可能有效实现),也与变异集合部分的能力不兼容


当然,压缩对于按顺序访问大数据块以及处理需要在较慢的存储和主内存之间切换的非常大的数据量非常有用。但是我们已经有了很好的工具,称为文件系统和数据库:-)

“长寿命的不经常访问的引用”-在这种情况下,你不会使用数据库吗?有一些公司正在转向内存数据库,但我明白你的观点。所以我认为没有真正的用例?是的。这假设您使用的对象可以可靠地转换为字节数组或从字节数组转换为字节数组,并且进一步说明对它们进行压缩是值得的。