阵列的好处

2022-09-01 11:45:05

在我看来,列表相对于数组的优势非常明显:

  • 泛型提供更精确的键入:。List<Integer>, List<? extends Number>, List<? super Integer>
  • List 接口有一堆有用的方法:等。对于数组,除了 get/set 之外的所有标准操作都必须通过将其传递给静态方法以过程方式执行。addAllremove
  • 集合提供不同的实现,如 、、不可修改和同步列表,这些列表可以隐藏在通用 List 接口下。ArrayListLinkedList
  • OOB 长度控制。

作为缺点,我只能提到没有语法糖和运行时类型检查。同时,支持这两种结构需要频繁使用 和 方法,这使得代码的可读性降低。因此,我很好奇使用数组是否有任何我错过的重要好处。asListtoArray


答案 1

数组在处理时间和内存占用方面都效率更高。这尤其适用于对基元类型(如 或 )进行操作的情况,因为要求将所有元素包装在 (如 or ) 中。虽然 Java 5 引入的自动装箱功能减少了此类包装和解包所需的代码量,但它并没有消除性能问题,因为包装器对象仍在创建中。intlongListObjectIntegerLong

但是,大多数应用程序可能没有任何与这些问题相关的性能瓶颈,因此在大多数情况下,其他集合应该可以正常工作。在这些情况下,编程的便利性超过了内存或CPU使用率的增加,并且是正确的选择。ListList


答案 2

如果列表不经常更改,则 Lists 会为您永远不会使用的对象添加大量额外的权重。当您尝试运行需要优化的内容时,这很有帮助。这种额外的权重也使事情变得比仅使用数组时更慢。但是,除非您知道您需要数组为您提供的增益,否则您应该只使用Lists。