数组比数组列表快吗?

2022-09-03 04:10:20

我的直觉是数组比 arraylist 更快,因为 arraylist 是使用数组实现的,这些数组会在填充/丢失元素时调整大小。

我只是想确认这是否属实,这意味着如果你知道要保存的元素数量,就永远没有理由使用数组列表。


答案 1

任何性能差异都可以忽略不计,尤其是在使用初始容量初始化数组列表时。以任何使其最具可读性和可维护性的方式编写代码,并尽量不要优化此类内容,除非您通过测试确定您正在从中获得显着的性能损失。

使用的潜在原因:ArrayList

  • 有用的方法(等)contains
  • 实现 、 和 ,因此可以在许多基于接口的 API 调用中使用。IterableCollectionList
  • 即使您目前“知道”您的收藏大小永远不会改变,但生活却向我们提出了意想不到的要求。当没有明显的优势时,为什么要把自己锁定在一个模式中呢?

答案 2

ArrayList为您提供了原始数组所没有的许多功能。如果您知道元素的数量,则可以创建该大小的 ArrayList。

new ArrayList<String>(100);

如果您担心ArrayList和数组之间的速度差异,那么您担心的是错误的事情。它不太可能成为代码中的瓶颈。如果是这样,几乎肯定有比更改为数组更好的答案。

不要屈服于过早的优化。它会对你的代码造成严重破坏。大多数事情并不重要,只有少数事情可以。您只能通过分析代码来找到这几件事。试图让每个部分都快是一种非常无效的使整个快速的方法。保持干净,简单的设计更有效。这将为您提供必要的接缝,以便在实际需要的一两个地方引入优化。