阵列的好处

Vit*_*nko 29 java arrays list arraylist

正如我所看到的,列表在数组上的优势非常明显:

  • 泛型提供更精确的输入:List<Integer>, List<? extends Number>, List<? super Integer>.
  • 甲List接口有一堆有用的方法:addAll,remove等等.虽然对阵列除了获得/设置所有标准操作必须在过程中的方式通过将它传递给一个静态方法进行.
  • 集合提供了不同的实现,例如ArrayList,LinkedList不可修改和同步列表,可以隐藏在公共List接口下.
  • OOB长度控制.

作为缺点,我只能提到没有语法糖和运行时类型检查.同时支持两种结构需要频繁使用asListtoArray方法,这使得代码不易读取.所以我很好奇使用我想念的数组有什么重要的好处.

mar*_*usk 20

在处理时间和内存占用方面,阵列都更有效.这尤其适用如果要在原始类型,例如操作intlong,由于List需要将包装在所有元素Object(如IntegerLong).虽然Java 5引入的自动装箱功能减少了此类打包和解包所需的代码量,但它并未消除性能问题,因为仍在创建包装器对象.

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

  • +1:数组效率更高,但通常不需要.在我编写的所有业务应用程序中,从来没有可以通过使用数组替换集合来解决性能问题.仅在数字运算工具中,我才看到需要避免包装基元,因此需要坚持使用数组. (4认同)

unh*_*ler 12

如果您的列表不经常更改,列表会为您永远不会使用的对象添加许多额外的权重.当您尝试运行需要优化的内容时,这很有帮助.这个额外的重量也会比只使用数组更慢.但是,除非您知道需要获得数组给出的增益,否则您应该只使用列表.


Gui*_*ume 7

我在这里没有提到的一件事:数组可以有N个维度,而列表只能有一个.您可以使用列表列表,但语法(List<List<...>>)比[] []更麻烦


dou*_*lep 5

速度.集合比简单数组慢一些:内部大多数仍使用数组,但围绕这些数组有额外的代码层.当然,除非您特别需要额外的性能,否则仍应使用集合.

数组的另一个小优点是使用数组调用可变方法可能更容易.这应该永远不是选择一个在另一个上面的主要原因.