繁体   English   中英

搜寻TIntSet中的最高和最低元素?

[英]Highest and lowest elements in trove TIntSet?

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

不幸的是,我找不到类似于first()last()任何方法。

是否有可能克服这种不足?

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

fastutil在所有方面都比Trove更好。 IntSortedSet接口具有firstInt()lastInt()方法。

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

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

如果您想要第一个/最后一个/单元格/楼层等类型的选项,则需要基于树的集合,并且trove没有类似的东西。 如果您想扩展TIntSet以拥有这种东西,那么

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

  • 另一个选择是,您只能对值使用一个数组,但对keep进行排序并使用二进制搜索来支持map API。 与trove相比,get / put的速度可能有点慢,但由于trove的负载系数为.5,因此可以节省内存

因此,您可以根据需要进行权衡取舍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM