使用 GNU trove 进行整数的 SortedSet

发布于 2024-12-17 17:41:03 字数 191 浏览 5 评论 0原文

出于性能原因,我正在将一些代码迁移到 GNU trove。

但是,我确实有一些 TreeSet,其中我需要相当快的更新和查找以及排序迭代 - TreeSet 的主要用例。当然,我会回顾一下使用情况,并检查我是否可以使用 HashSet 同样好。

GNU Trove 中对 SortedSet 的合适替代是什么?

谢谢。

I'm migrating some code over to GNU trove for performance reasons.

However, I do have some TreeSets, where I need rather fast update and lookups along with a sorted iteration - the primary use case of a TreeSet. Of course I will go over the use and check if I can maybe live with a HashSet just as good.

What is the appropriate replacement from GNU Trove for a SortedSet?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心房的律动 2024-12-24 17:41:03

更新:我在 Sourceforge 上的 Trove 中发现了相关功能请求: http://sourceforge.net/tracker/index.php?func=detail&aid=1631704&group_id=39235&atid=424685

到目前为止似乎还没有 SortedSet ,而 Trove 的好处在这里似乎没那么大:它会为原始类型节省一些内存(并避免装箱),但是数据的算法组织可能会是相同的,并且仍然需要入口对象。

更新#2:

对于许多用例(取决于您的写入访问模式),您应该能够通过仅使用 TIntArrayList 并使用binarySearch 方法(假设数组已排序!)

插入已排序数组的时间复杂度为 O(n),因此当您对数组执行大量修改并在之后查询时,这不是一个选项每个。但如果您的更改是批量添加,则只需在每次更新后调用 sort 即可获得令人惊讶的良好性能!

Update: I found a related feature request in Trove on Sourceforge: http://sourceforge.net/tracker/index.php?func=detail&aid=1631704&group_id=39235&atid=424685

There doesn't seem to be a SortedSet so far, and the benefits of Trove seem to be less big here: it will save some memory for primitive types (and avoid boxing), but the algorithmic organization of the data will likely be the same, and it will still need entry objects.

Update #2:

For many use cases - depending on your write access patterns -, you should be able to get a decent performance by just using a TIntArrayList and using the binarySearch method for lookup (which assumes the array to be sorted!)

Inserting into a sorted array is O(n), so this is not an option when you perform a ton of modifications to the array, and query after each. But if your changes are bulk additions, just calling sort after each update should give you a surprisingly good performance!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文