当前位置: 首页 > 面试题库 >

具有Queue基本功能的最快Java集合是什么?

东方和煦
2023-03-14
问题内容

Java中最快的集合是什么?

我只需要添加和删除操作,顺序并不重要,等于元素不是问题,无非就是添加和删除。

没有限制的大小也很重要。

这些集合中将包含对象。

当前,我正在使用ArrayDeque,因为我看到这是更快的Queue实现。


问题答案:

ArrayDeque是最好的。请参阅此基准测试,该基准测试来自博客文章,涉及基准测试的结果。ArrayDeque没有节点分配的开销,LinkedList也没有转移删除的剩余数组内容的开销ArrayList。在基准测试中,它执行约
3倍
,以及LinkedList大型队列和甚至比略好ArrayList于空队列。为了获得最佳性能,您可能希望为其提供足够大的初始容量,以容纳一次可能要容纳的元素数量,从而避免许多调整大小。

ArrayList和之间LinkedList,这似乎取决于队列在任何给定时间将包含的全部元素的平均数量,并且从大约10个元素开始LinkedList跳动ArrayList



 类似资料:
  • 问题内容: 是否有所有程序员都应该知道的开源库?我在想一些通用的东西,它是对标准的扩展,其中包含对所有应用程序都有用的基本功能。 问题答案: Apache Commons Log4j Google收藏

  • 主要内容:1 什么是Java集合,2 Java集合层次结构,3 Java Collection接口的方法,4 Iterator接口,5 Iterable接口,6 Collection接口,7 List接口,6 ArrayList,7 LinkedList,8 Vector,9 Stack,10 Queue接口,11 PriorityQueue,12 Deque接口,13 ArrayDeque,14 Set接口,15 HashSet,16 LinkedHashSet,17 SortedSet接口,

  • 在jdk8中,Stream提供带有、和的功能 我在注释中看到了将String Stream转换为String的示例,但我很困惑组合器在函数签名中的用途。我认为在累加器中,新元素已添加到结果大陆? 我尝试给组合器一个null值,但我得到了一个null指针异常。

  • 问题内容: 我想过滤java.util.Collection基于谓词的。 问题答案: Java 8(2014)在一行代码中使用流和lambda解决了此问题: 这是一个教程。 使用修改收集到位。(注意:在这种情况下,谓词将删除满足该谓词的对象): 允许过滤集合而无需编写循环或内部类: 你能想象一些更具可读性的东西吗?

  • 我有一个密集更新的列表,所以我将它们分组在一起,并在单个线程中作为批处理作业执行它们。其他线程可以随时发送更新。 当调度要排队更新的作业时,我想要一个集合,如果作业已经存在,我可以在其中修改作业(假设itemId为键)。在这个例子中: 因此,队列不会开始为同一项提供数千个作业。当作业开始执行时,我需要以某种方式在队列中循环,但是在更新作业时,它不应该被更新(每个项目都应该有自己的锁吗?)。 更新作

  • 本文将介绍 manifest.json 的一些基本配置,通过这些基本配置,PWA 站点可以支持添加至主屏幕功能。 自定义名称 自定义图标 设置启动网址 设置作用域 自定义名称 PWA在通过应用安装横幅引导用户安装 app,以及被添加到主屏幕时,需要显示应用名称以便用户将其与其他应用区分开来。对应的属性为: name: {string} 应用名称,用于安装横幅、启动画面显示 short_name: