特工TIntSet中的最高和最低元素?

时间:2015-06-24 13:43:59

标签: java collections sortedset trove4j

TIntSet是意义上的“排序集”,即它的元素具有自然顺序。

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

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

fastutil比Trove更好。 firstInt()与[{1}}和lastInt()方法有IntSortedSet接口。

答案 2 :(得分:0)

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

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

继承的

答案 3 :(得分:0)

如果你想要第一个/最后一个/单元格/地板等类型的选项,那么基于树的集合是必需的,并且特洛伊没有这样的东西。如果你想扩展TIntSet那么具有这样的东西

  • 其中一个简单选项可以是在并行int数组中维护排序值,并使用它来提供第一种/最后一种类型的请求,但这需要额外的内存。

  • 另一种选择是,您只能使用一个数组作为值,但保持已排序并使用二进制搜索来支持地图API。与trove相比,这对于获取/放置来说可能有点慢,但是你可以节省内存,因为trove有.5 loadfactor

因此,您可以根据自己想要的交易做出决定。