gpt4 book ai didi

java - 压缩的 SortedSet 实现

转载 作者:行者123 更新时间:2023-11-30 09:46:06 28 4
gpt4 key购买 nike

我需要以节省空间的方式在 SortedSet 实现中存储大量 Long 值。我正在考虑位集实现并发现 Javaewah .但是,API 需要 int 值而不是 long

任何人都可以推荐任何替代方案或建议解决此问题的好方法吗?我主要关心空间效率。构建集合后,我将需要访问一次最小和最大元素。然而,访问时间并不是一个大问题(也就是说,完全运行长度编码的实现会很好)。

编辑

我应该清楚,实现不必实现 SortedSet 接口(interface),前提是我可以访问集合的最小和最大元素。

最佳答案

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

或者您可以使用带有长度的 long[] 并自己完成。 ;)

这将比原始值本身多使用大约 64 个字节。如果您可以对 long 值的范围做出一些假设,您可以变得更紧凑。例如如果它们实际上限于 48 位。

您可以考虑使用 LongBuffer。如果它是内存映射的,它会避免使用堆内存或直接内存,但您可以自己实现一个排序例程。


如果它们是聚类的,您可以将数据表示为一组范围。范围可以是纯 A - B,或具有起始值的 BitSet。后者适用于电话号码。 ;)

关于java - 压缩的 SortedSet<Long> 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7307116/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com