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

Java Collections Framework实现的Big-O摘要?

王骏
2023-03-14
问题内容

我可能很快就会教“ Java速成课程”。虽然可以很安全地假设受众成员知道Big-O表示法,但是假设他们将知道各种集合实现上的各种操作的顺序可能是不安全的。

我可能会花一些时间自己生成一个摘要矩阵,但是如果它已经存在于公共领域中的某个地方,我肯定会重用它(当然要有适当的信誉)。

有人有指针吗?


问题答案:

我可能很快就会教“ Java速成课程”。虽然可以很安全地假设受众成员知道Big-O表示法,但是假设他们将知道各种集合实现上的各种操作的顺序可能是不安全的。

我可能会花一些时间自己生成一个摘要矩阵,但是如果它已经存在于公共领域中的某个地方,我肯定会重用它(当然要有适当的信誉)。

有人有指针吗?列出实现:

                      get  add  contains next remove(0) iterator.remove
ArrayList             O(1) O(1) O(n)     O(1) O(n)      O(n)
LinkedList            O(n) O(1) O(n)     O(1) O(1)      O(1)
CopyOnWrite-ArrayList O(1) O(n) O(n)     O(1) O(n)      O(n)

设置实现:

                      add      contains next     notes
HashSet               O(1)     O(1)     O(h/n)   h is the table capacity
LinkedHashSet         O(1)     O(1)     O(1) 
CopyOnWriteArraySet   O(n)     O(n)     O(1) 
EnumSet               O(1)     O(1)     O(1) 
TreeSet               O(log n) O(log n) O(log n)
ConcurrentSkipListSet O(log n) O(log n) O(1)

地图实现:

                      get      containsKey next     Notes
HashMap               O(1)     O(1)        O(h/n)   h is the table capacity
LinkedHashMap         O(1)     O(1)        O(1) 
IdentityHashMap       O(1)     O(1)        O(h/n)   h is the table capacity 
EnumMap               O(1)     O(1)        O(1) 
TreeMap               O(log n) O(log n)    O(log n) 
ConcurrentHashMap     O(1)     O(1)        O(h/n)   h is the table capacity 
ConcurrentSkipListMap O(log n) O(log n)    O(1)

队列实现:

                      offer    peek poll     size
PriorityQueue         O(log n) O(1) O(log n) O(1)
ConcurrentLinkedQueue O(1)     O(1) O(1)     O(n)
ArrayBlockingQueue    O(1)     O(1) O(1)     O(1)
LinkedBlockingQueue   O(1)     O(1) O(1)     O(1)
PriorityBlockingQueue O(log n) O(1) O(log n) O(1)
DelayQueue            O(log n) O(1) O(log n) O(1)
LinkedList            O(1)     O(1) O(1)     O(1)
ArrayDeque            O(1)     O(1) O(1)     O(1)
LinkedBlockingDeque   O(1)     O(1) O(1)     O(1)


 类似资料:
  • 必须分析算法的效率和准确性以比较它们并为某些场景选择特定算法。 进行此分析的过程称为渐近分析。 它指的是以数学计算单位计算任何操作的运行时间。 例如,一个操作的运行时间计算为f(n),并且可以用于另一个操作,其计算为g(n2)。 这意味着第一操作运行时间将随着n的增加而线性增加,并且当n增加时第二操作的运行时间将指数地增加。 类似地,如果n非常小,则两个操作的运行时间几乎相同。 通常,算法所需的时

  • 问题内容: 假设我有一些Python列表,其中包含N个元素。单个元素可以通过使用进行索引,其中是所需元素的索引。然而,Python列表也可以是索引,其中一个从列表中的“片” ,以期望。切片大小为N的列表的Big-O(最坏情况)表示法是什么? 就个人而言,如果我要对“切片器”进行编码,我会从迭代到,生成一个新列表并返回它,表示O(N),这是Python的方式吗? 谢谢, 问题答案: 获取切片为O()

  • 问题内容: 有谁知道时间的复杂度是多少? 问题答案: 好吧,它本身就是O(1),因为它是一个中间操作,它不消耗流,而只是在管道中添加一个操作。 一旦终端操作消耗了流,就进行排序,或者 它不执行任何操作(O(1)),因为流知道元素已经被排序(例如,因为它们来自SortedSet) 或流不是并行的,并且它委托给(O(n log n)) 或流是并行的,并委托给(O(n log n))

  • 我有以下代码,这是对这个问题的回答:https://leetcode.com/problems/add-digits/ 不过,作为后续行动,我试图确定什么是BigO增长。我第一次尝试计算它的结果是O(n^n)(我假设每个深度的增长每次都直接取决于n),这很令人沮丧。我错了吗?我希望我错了。

  • 本文向大家介绍java实现的MD5摘要算法完整实例,包括了java实现的MD5摘要算法完整实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java实现的MD5摘要算法。分享给大家供大家参考,具体如下: 使用org.apache.commons.codec.digest.DigestUtilsorg.apache.commons.codec.digest.DigestUtils来实现md

  • 本文向大家介绍Python实现提取文章摘要的方法,包括了Python实现提取文章摘要的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现提取文章摘要的方法。分享给大家供大家参考。具体如下: 一、概述 在博客系统的文章列表中,为了更有效地呈现文章内容,从而让读者更有针对性地选择阅读,通常会同时提供文章的标题和摘要。 一篇文章的内容可以是纯文本格式的,但在网络盛行的当今,更多