栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么不总是在Java中始终使用ArrayList而不是普通的ol'数组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么不总是在Java中始终使用ArrayList而不是普通的ol'数组?

如果需要原始类型的集合,那么数组很可能是完成这项工作的最佳工具。装箱是比较昂贵的操作。对于将用作图元的图元集合(不包括地图),我几乎总是使用数组来避免重复装箱和拆箱。

但是,我很少担心数组和的性能差异

ArrayList
。如果
List
可以提供更好,更简洁,更可维护的代码,那么除非有一些令人信服的理由,否则我将始终使用
List
(或,
Collection
Set
,如适用,但您的问题是关于
ArrayList
)。性能
很少 是令人信服的原因。

Collection
几乎总是使用s会产生更好的代码,部分原因是数组无法与泛型配合使用,正如约翰内斯·魏斯(JohannesWeiß)在评论中已经指出的那样,还有其他许多原因:

  • 集合具有非常丰富的API和各种各样的实现,可以(在大多数情况下)相互轻松地互换
  • 如果 偶尔 使用数组版本很有用,则Collection可以简单地转换为数组
  • 许多Collection的增长比数组的增长更优雅,这可能是性能问题
  • 集合与泛型一起很好地工作,数组表现很差
  • 正如TofuBeer指出的那样,数组协方差很奇怪,并且可以以没有对象会起作用的非预期方式起作用。集合以预期的方式处理协方差。
  • 阵列需要根据其任务手动调整大小,如果阵列未满,则需要自己进行跟踪。如果需要调整阵列的大小,则必须自己进行操作。

所有这些在一起,我很少使用数组,而更多地使用

ArrayList
。但是,我确实
List
经常使用s(或just
Collection
Set
)。我最常使用的数组是当要存储的项目是基元并且将被插入和访问并用作基元时。如果装箱和拆箱的速度如此之快,以至于成为微不足道的考虑因素,那么我可能会重新考虑这个决定,但是以某种始终引用的形式处理某些东西并将其存储起来更为方便。(即,用“
int”代替“ Integer”。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452848.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号