TIntSet 中最高和最低的元素?

Highest and lowest elements in trove TIntSet?

TIntSet 在意义上是 "sorted set",即它的元素具有自然顺序。

很遗憾,我找不到任何类似于first() and last()的方法。

是否有可能以某种方式克服这种不足?

TIntSet 未排序(它是一个哈希集),因此为了找到最小值或最大值,您需要迭代所有值。

为什么你认为这个集合是有序的?看起来好像不是。它没有从 JDK 集合框架实现 SortedSet 或 NavigableSet 接口——那里没有这样的方法。

first() 和 last() 方法实际上是继承自接口 SortedSet https://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html#first%28%29

如果您想要 first/last/cell/floor 等类型的选项,则需要基于树的集合,而 trove 没有类似的东西。如果你想扩展 TIntSet 来拥有这样的东西那么

  • 一个简单的选项可以在并行 int 数组中维护排序值并使用它来服务 first/last 类型的请求,但这将需要额外的内存。

  • 另一种选择是您可以只使用一个数组作为值,但保持排序并使用二进制搜索来支持映射 API。与 trove 相比,get/put 可能有点慢,但您可以节省内存,因为 trove 有 .5 loadfactor

所以你可以根据你想要的权衡做出决定。

fastutil is all ways better than Trove. There is IntSortedSetfirstInt()lastInt() 方法的接口。