java - 从排序列表中获取间隔的最快方法?

标签 java algorithm search arraylist

假设有 Elementposition上课属性(property)。

public class Element {

   private float position;

   public float getPosition() {
      return position;
   }

   public void setPosition(float position) {
      this.position = position;
   }
}

此外,还有 ArrayList<Element> elements持有随机分配的元素 position值。然后元素按位置值升序排序。

问题:在某个位置区间内获取所有元素的最快方法是什么 <a,b> ,然后简单地遍历元素,像这样:

for (Element element : elements) {
   if (element.getPosition() > a && element.getPosition() < b) {
      // Do something with an element.
   }
}

我假设有一个更快的方法,因为假设列表是排序的。

最佳答案

使用binary search找到范围的起点和终点,然后在它们之间迭代。

关于java - 从排序列表中获取间隔的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20924418/

相关文章:

java - 输出应该是数组中的内容

c++ - Rabin-Karp 算法代码中的负哈希值

python - 两个哈希的比较算法

windows - 搜索具有特定文件内容的文件

php - 如何在mysql或PHP中获取匹配结果的百分比?

java - 如何为我自己的聊天客户端实现 XMPP 协议(protocol)?

java - 是否可以将数组字符串与普通字符串进行比较?

java - 带有 OR 语句的 Spring @ConditionalOnExpression

java - 按对象的边界将集合排序到链中

search - 分层自动建议