List性能

Posted woshi123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List性能相关的知识,希望对你有一定的参考价值。

List性能

Java提供的List就是一个线性表接口,而ArrayList LinkedList是两个List接口的典型实现:基于数组和基于链表的线性表。

Queue代表了队列,Deque代表了双端队列(也可以当作栈使用)。

一般来说,由于数组以一块连续内存区来保存所有的元素,所以随机访问的性能比较好,所有内部以数组作为底层实现的集合在随即访问时性能都比较好;而内部以链表作为底层实现的集合在执行插入、删除操作时有较好的性能。

但总体来讲,ArrayList的性能比LinkedList的性能较好,因此大部分时间搜应该考虑ArrayList。

关于使用List有如下建议:

  • 如果需要遍历List集合元素,对于ArrayList、Vector集合,应该使用随机访问方法(get)来遍历集合元素,这样性能更好;对于LinkedList集合,则应该采用Iterator迭代器来遍历集合元素。
  • 如果需要经常执行插入、删除操作来改变包含大量数据的List集合大小,可考虑使用LinkedList集合。使用ArrayList、Vector集合可能需要经常重新分配内部数组大小,效果可能较差。
  • 如果有多个线程需要同时访问List集合中的元素,开发着可考虑使用Collections将集合包装成线程安全的集合。

以上是关于List性能的主要内容,如果未能解决你的问题,请参考以下文章

java: List.contains() 与手动搜索的性能差异

Android中List循环遍历性能对照

.NET性能优化-快速遍历List集合

(转)list set map 粗浅性能对比分析

C# DataTable与List读写性能测试

性能测试的 Check List (不断更新中)