【问题标题】:Time complexity of ArrayList traversalArrayList遍历的时间复杂度
【发布时间】:2015-03-02 17:54:27
【问题描述】:

我正在开发一个可以使用数组数据结构或 ArrayList 类的程序。我想知道在哪种情况下我对元素的访问会更快,数组还是 ArrayList。 例如,如果 'a' 是一个数组,'b' 是一个 ArrayList 两者都是 Integer 类型,'c' 是任何整数变量,以下哪个语句会执行得更快?

c=a[10];
c=b.get(10);

【问题讨论】:

  • 编写基准测试将非常非常简单......这也将允许您也可以对不同的 VM 实现进行基准测试......因为它们并不完全相同。

标签: java arrays arraylist


【解决方案1】:

size、isEmpty、get、set、iterator 和 listIterator 操作在恒定时间内运行。

http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

【讨论】:

  • 另一个问题呢,哪个更快??
  • 显然,数组也以恒定时间运行。因此,它们应该大致等效(尽管在您的情况下,数组 a 应该运行得更快一点)。假设您所做的只是访问,请将它们视为相同。
  • @PiyushVishwakarma ArrayList,虽然使用数组实现,但理论上 ArrayList 会由于额外的 get 方法调用而通过可能的开销“更慢”,尽管与您正在执行的操作相比,它很可能微不足道迭代时的每个元素,并且与使用基本数组获得更复杂代码的成本相比。您可以通过查看 get 的代码自己检查这一点,并查看在实际从数组中检索之前执行了哪些额外的逻辑。
猜你喜欢
  • 2012-12-14
  • 2022-07-01
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多