簡體   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