扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:东波\\\\\\\'S BLOG 来源:东波’S BLOG 2007年9月1日
关键字:
int count = 0; |
表4显示出,ArrayList的性能显著地超过了LinkedList,它再一次显示出ArrayList应该是我们首选的类。表5显示了利用从List.listIterator(int)获得的ListIterator对象迭代所有元素所需要的时间,如果查询机制不能在List内部实现,这些迭代器是必需的。ArrayList再一次显示出了较高的性能,但这次性能的差异程度不象表4显示的那样不可思议。注意,表5所显示的绝对时间相当于表4显示绝对时间的10倍,即,ArrayList内部遍历大约比ArrayList利用ListIterator迭代要快10倍。
表4:通过内部访问迭代集合中的所有元素 | |||
|
1.2 JVM |
1.3 JVM |
HotSpot 2.0 JVM |
ArrayList内部搜索 |
100% |
106% |
197% |
LinkedList内部搜索 |
470% |
493% |
448% |
表5:通过ListIterator遍历集合中的所有元素 | |||
|
1.2 JVM |
1.3 JVM |
HotSpot 2.0 JVM |
利用ListIterator迭代ArrayList |
100% |
118% |
75.2% |
利用ListIterator迭代ListedList |
117% |
186% |
156% |
结束语
实际测量和我们所考虑的其他因素都清楚地显示出,ArrayList和Vector通常比LinkedList和同步封装之后的LinkedList有着更好的性能。即使在你认为LinkedList可能提供更高性能的情况下,你也可以通过修改元素加入的方式从ArrayList争取更好的性能,例如翻转集合元素的次序。
有些情况下LinkedList会有更好的性能,例如,当大量元素需要同时加入到大型集合的开头和末尾时。但一般而言,我建议你优先使用ArrayList/Vector类,只有当它们存在明显的性能问题而LinkedList能够改进性能时,才使用LinkedList。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者