首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java:从集合中获取某个范围内的值

Java:从集合中获取某个范围内的值
EN

Stack Overflow用户
提问于 2013-07-07 20:39:34
回答 2查看 3.5K关注 0票数 3

假设我有一个(排序的)集合,可以是一个列表、一个Map、一个Set或其他任何东西。获得一定范围内的所有值的最佳解决方案是什么?

例如,我有一个整数列表: 1,5,7,9,12,30,50,100

我想检索8 +- 5值,它将是: 5,7,9,12

我知道NavigableMap,这很有趣,但是我只能使用它检索一个元素。

对于复杂度比O(N),或者O(NLogN)更好的算法,或者我可以使用的特定集合,你有什么建议吗?

非常感谢!成本

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-07 20:43:31

最接近您正在寻找的是具有following methodNavigableSet

代码语言:javascript
运行
复制
NavigableSet<E> subSet(E fromElement,
                   boolean fromInclusive,
                   E toElement,
                   boolean toInclusive)

如果您有一个排序列表,那么使用两次Collections.binarySearch()将允许您快速找到范围中第一个和最后一个元素的索引。

另外,请注意,如果您需要的是一个Map,那么NavigableMap就有一个similar method

票数 8
EN

Stack Overflow用户

发布于 2013-07-07 20:45:12

如果你有一个有序数组,你可以用二进制搜索范围的最小值,然后用二进制搜索O(log(n))中的最大值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17512213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档