Java中的快速队列

2024-03-18

我正在寻找一个快速queueJava 中的实现。我看到LinkedList实施Queue接口,但它只会像LinkedList正确的?有没有一种方法可以让队列更快,特别是对于add(我只需要poll, add并检查empty)。 以后我可能还需要一个PriorityQueue但尚未。


如果多个线程要访问队列,则考虑使用ArrayBlockingQueue http://java.sun.com/javase/6/docs/api/java/util/concurrent/ArrayBlockingQueue.html。否则看看ArrayDeque http://java.sun.com/javase/6/docs/api/java/util/ArrayDeque.html。来自ArrayDeque API:

这个类可能比 当用作堆栈时使用堆栈,速度更快 用作队列时比 LinkedList 好。

具体来说,如果现有数组有足够的容量,基于数组的队列实现可以减少调整底层数组大小的需要,从而使向队列的添加速度通常比LinkedList。意识到ArrayBlockingQueue是一个有界实现,而ArrayDeque将根据需要调整大小。

另一方面是LinkedList通常会提供更紧凑的表示,特别是在队列大幅增长和收缩的情况下。例如,如果您将 10,000,000 个元素添加到ArrayDeque然后删除 9,999,999 个元素,底层数组的长度仍为 10,000,000,而LinkedList就不会遇到这个问题。

实际上,对于对非阻塞队列的单线程访问,我倾向于支持LinkedList。我想性能差异可以忽略不计,你无论如何也不会注意到差异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中的快速队列 的相关文章

随机推荐

  • jQuery 数据表中的列排序

    我已经了解了 jQuery 数据表插件中的列排序以及控制它的各种方法 我有一个查询是否可以通过单击上箭头图标将按升序和下箭头图标进行排序的方式控制排序会按降序排序吗 有两种方法可以做到这一点 具体取决于datatables版本 编辑数据表版
  • 如何在Python中将一个对象的所有属性复制到另一个对象?

    在Python中 是否有一个库方法可以复制同一类的两个 已经存在的 实例之间的所有属性 我的意思是 类似 Apache Commons 的东西PropertyUtilsBean copyProperties Try destination
  • ActiveRecord 查询比直接 SQL 慢得多?

    我一直致力于优化项目的数据库调用 我注意到下面两个相同的调用之间的性能存在 显着 差异 connection ActiveRecord Base connection pgresult connection execute SELECT S
  • 当我“推”到 Bitbucket 时,可以从 VPS 中“拉”一个钩子

    我正在 Bitbucket 中管理我的 WordPress 模板 每次我push主题 我必须登录我的 VPS 服务器并且pull回购协议 我想自动完成 如果我自己运行 git daemon 我找到了一个解决方案 推送到服务器后执行自动拉取请
  • 基于现有模板生成Word文档的最佳方法是什么

    TL DR 我可以使用 NET 生成 Word 文档 如 XAML ItemTemplates 吗 我发现很难找到一个满足我所有要求的解决方案 所以我想我会把它扔到 stackoverflow 希望有人能指导我 非常感谢 简单来说 我需要根
  • 如何根据条目的长度过滤 pandas 数据框

    在 pandas 数据框中 我有一个字段 amp 应由长度为 495 的列表填充 是否有一种 pandas ic 方法可以快速过滤此长度 使得具有字段 amp 的所有行不等于 495被丢弃 I tried df len df amp 495
  • 如何将 SQL 查询与不同的表达式结合起来?

    我的三个查询已经达到了我的 SQL 知识的顶峰 Microsoft SQL 2005 如果这很重要 现在我需要将它们组合成一个查询 并将所有值放在一行上 我的实际查询如下 但我认为如果我在这里提供一个简单的版本会更容易 查询一 Provid
  • 尝试覆盖 Hive 分区时写入 __HIVE_DEFAULT_PARTITION__ 的行已损坏

    当尝试使用 Spark 2 3 覆盖 Hive 表中的分区时 我看到一些非常奇怪的行为 首先 我在构建 SparkSession 时设置以下设置 config spark sql sources partitionOverwriteMode
  • XmlPullParser:获取包含 XML 标签的内部文本

    假设您有一个如下所示的 XML 文档
  • 有什么方法可以使用 boto3 直接将文件写入 S3 吗?

    我编写了一个 python 脚本来处理非常大的文件 总共几 TB 我将在 EC2 实例上运行该脚本 之后 我想将处理后的文件存储在 S3 存储桶中 目前 我的脚本首先将数据保存到磁盘 然后将其上传到S3 不幸的是 考虑到等待实例首先写入磁盘
  • Google PageSpeed 用户代理的名称是什么?

    这一页 https developers google com speed docs insights faq whyonlinediff表示它使用自定义用户代理 但没有提及名称 如果用户代理来自 PageSpeed 我希望能够运行一些逻辑
  • VS2013测试代理和控制器不通信

    我有一个运行 VS2013 负载测试控制器的 Windows Azure VM 和另一个运行 2013 负载测试代理的 Azure VM 我一直无法让两人成功沟通 我将每个虚拟机的主机名和 IP 添加到另一个虚拟机的 HOSTS 文件中 我
  • 依赖注入上下文中的组合根是什么?

    我正在探索依赖注入和术语成分根到处都在使用 那么它是什么 组合根是应用程序中使用依赖项注入容器组合应用程序的对象图的单个位置 尽管如何完成此操作无关紧要 它可以使用容器 也可以使用手动完成 pure DI http blog ploeh d
  • 是否可以在 HTML 中创建多级有序列表? [复制]

    这个问题在这里已经有答案了 我要这个 1 Main 1 1 sub1 1 2 sub2 2 Main2 2 1 sub3 可以在 HTML 中做到这一点吗 谢谢 这个解决方案对我有用 hide original list counter o
  • 我什么时候使用像 Paxos 这样的共识算法,什么时候使用像向量时钟这样的算法?

    我已经阅读了很多有关保证分布式系统中节点之间一致性的不同策略的文章 但我在弄清楚何时使用哪种算法时遇到了一些麻烦 我会在什么样的系统中使用矢量时钟之类的东西 哪个系统最适合使用 Paxos 之类的东西 两者是互相排斥的吗 有一个由 2 个节
  • Laravel 有许多多对多对一雄辩

    我没有太多运气以 Laravel 的方式解决这个问题 所以我提出两个问题 假设我有一辆汽车 并且该汽车可以有许多特征 但该特征也按特征类型分隔 我如何返回所述汽车的所有特征 分隔特征类型 我有四个表 listings features 是数
  • 调整 UISearchDisplayController 变暗黑色覆盖层的大小

    单击搜索栏后 有人知道如何过度调整暗黑色的大小吗 当我单击 取消 时 我遇到问题 表格视图将消耗然后动画消失 我用它来调整我的结果表视图的大小 void searchDisplayController UISearchDisplayCont
  • 寻找良好的服务器端语言,允许玩家上传可执行的代码

    我有一个想要编写的程序的想法 但哪种语言最好是我的问题 如果我有一款赛车游戏 并且希望允许用户提交新的交互式 3D 赛道 想想 Speed Racer 电影中的赛道 车辆及其自动驾驶车辆的代码 那么他们将创建 AI对于他们的汽车来说 这将使
  • jquery datatable 使用表单编辑表行数据

    var tb example DataTable addRow on click function var typeName type option selected val var amount amount val tb row add
  • Java中的快速队列

    我正在寻找一个快速queueJava 中的实现 我看到LinkedList实施Queue接口 但它只会像LinkedList正确的 有没有一种方法可以让队列更快 特别是对于add 我只需要poll add并检查empty 以后我可能还需要一