-
26-10-2019 - |
题
我需要存储大量 Long
值 SortedSet
以空间效率的方式实施。我正在考虑实现位置并发现了 Javaewah. 。但是,API期望 int
值而不是 long
s。
谁能推荐任何替代方案或建议解决此问题的好方法?我主要关注太空效率。构建集合时,我将需要一次访问最低和最大元素。但是,访问时间并不是一个巨大的问题(即,完全运行的编码实现将是可以的)。
编辑
我应该明确实施 不必 实施 SortedSet
提供我可以访问集合的最小元素和最大元素的接口。
解决方案
您可以使用使用tlongarraylist long[]
下。它支持 sort()
因此,最小和最大将是第一个也是最后一个值。
或者您可以使用 long[]
长时间,自己做。 )
这将比原始值本身使用大约64个字节。如果您可以对长值的范围进行一些假设,则可以获得更紧凑的问题。例如,如果它们实际上仅限于48位。
您可能会考虑使用Longbuffer。如果是内存映射的,则避免使用堆或直接内存,但是您会自己实现一个常规。
如果它们是聚类的,则可以将数据表示为一组范围。范围可能是纯A -B或具有起始值的比特集。后来的电话号码很好。 )
其他提示
不确定它是否已设置或与常规JCF相比的效率有多高,但请看一下:
不隶属于 StackOverflow