我需要存储大量 LongSortedSet 以空间效率的方式实施。我正在考虑实现位置并发现了 Javaewah. 。但是,API期望 int 值而不是 longs。

谁能推荐任何替代方案或建议解决此问题的好方法?我主要关注太空效率。构建集合时,我将需要一次访问最低和最大元素。但是,访问时间并不是一个巨大的问题(即,完全运行的编码实现将是可以的)。

编辑

我应该明确实施 不必 实施 SortedSet 提供我可以访问集合的最小元素和最大元素的接口。

有帮助吗?

解决方案

您可以使用使用tlongarraylist long[] 下。它支持 sort() 因此,最小和最大将是第一个也是最后一个值。

或者您可以使用 long[] 长时间,自己做。 )

这将比原始值本身使用大约64个字节。如果您可以对长值的范围进行一些假设,则可以获得更紧凑的问题。例如,如果它们实际上仅限于48位。

您可能会考虑使用Longbuffer。如果是内存映射的,则避免使用堆或直接内存,但是您会自己实现一个常规。


如果它们是聚类的,则可以将数据表示为一组范围。范围可能是纯A -B或具有起始值的比特集。后来的电话号码很好。 )

其他提示

不确定它是否已设置或与常规JCF相比的效率有多高,但请看一下:

http://commons.apache.org/primitives/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top