是否有全面的Java数据结构大O列表?

是否有全面的Java数据结构大O列表?,java,data-structures,big-o,Java,Data Structures,Big O,这个问题几乎说明了一切。具体地说,我想要一个结构中所有方法的Big-O,除了通常的方法。医生们对此只字未提 附录 对于那些投票结束的人,我对基本的添加、删除、迭代器等不感兴趣 这些资源对于经常使用的方法来说是很好的,但我更感兴趣的是该堆其余部分的算法效率 例如,TreeMap.keySet()的效率是多少?我会查看中有关算法的标准Big-O信息。我不确定是否有电子表格或其他列表,但您可以在文档中为每个结构获取这些信息,例如: 此实现为基本操作(添加、删除和包含)提供了有保证的日志(n)时间开销

这个问题几乎说明了一切。具体地说,我想要一个结构中所有方法的Big-O,除了通常的方法。医生们对此只字未提

附录

对于那些投票结束的人,我对基本的添加、删除、迭代器等不感兴趣 这些资源对于经常使用的方法来说是很好的,但我更感兴趣的是该堆其余部分的算法效率


例如,
TreeMap.keySet()
的效率是多少?

我会查看中有关算法的标准Big-O信息。

我不确定是否有电子表格或其他列表,但您可以在文档中为每个结构获取这些信息,例如:

此实现为基本操作(添加、删除和包含)提供了有保证的日志(n)时间开销


真的不可能。每个JVM都可以有自己的运行时,以及自己的实现。有几个方法指定了O()特性,但其余的是Sun、Oracle、IBM、Apple或Azul所做的。

Java Collections算法效率: ArrayList
  • 获取、设置:O(1)
  • 添加、删除:O(n)
  • 包含,索引为:O(n)
哈希图
  • 获取、放置、移除、包含如下内容:O(1)
哈希集
  • 添加、删除、包含:O(1)
链接数据集
  • 添加、删除、包含:O(1)
链表
  • 获取、设置、添加、删除(从任意一端):O(1)
  • 获取、设置、添加、删除(从索引中):O(n)
  • 包含,索引为:O(n)
优先队列
  • 窥视:O(1)
  • 添加、删除:O(logn)
树图
  • 移除、获取、放置、包含以下内容:O(logn)
有序树
  • 添加、删除、包含:O(logn)

但是您如何知道java类中使用了哪些算法呢?java文档通常会提到数据结构使用的算法。因此,这里的原因是:“此实现为基本操作(添加、删除和包含)提供了保证的日志(n)时间成本。”JVM和类的实现是不同的。你确定每个制造JVM的人都会重新实现所有的JRE库吗?@Anrey,我说,“一些方法”。这就是一个例子@达里奥,不,当然不是。但是你无法预测。Maybee一些JVM的实现确实没有“基本操作(添加、删除和包含)的保证日志(n)时间成本”的实现,但是这将是一个bug。如果JavaDoc说它在O(foo)中工作,那么您可以期望它至少在O(foo)中运行。如果不写,你应该写一个bug报告。当你删除数组列表中的一个元素时,你不需要删除索引最高的元素吗?