ArrayList,LinkedList,Vestor对比

来源:互联网 发布:有网络但是网页打不开 编辑:程序博客网 时间:2024/06/09 14:49

ArrayList 和 LinkedList 对比

1、如果在列表末尾增加一个元素,用两个中的任意一个都行,相差不大。

2、如果在内部数组中增加一项,指向所添加的元素,建议只用LinkedList,因为对于LinkedLit而言,开销一样大,然而对ArrayList而言,就会涉及到对数组重新分配,就会造成开销过大。

3、中间插入或者删除一个元素,用LinkedList

4、LinkedList不支持高效的随机访问元素,如果涉及到要高效的随机访问,建议用ArrayList。

5、ArrayList的查询效率比较高,增删动作的效率比较差,适用于查询比较频繁,增删动作较少的元素管理的集合。

      LinkedList的查询效率低,但是增删效率很高。适用于增删动作的比较频繁,查询次数较少的元素管理集合。

6、相同点:线程都是不安全的,都实现了List接口

      不同点:ArrayList 底层是一种线性数据结构,它的底层是用数组实现的,相当于动态数组

                  LinkedList底层的数据结构是基于双向循环链表的,底层是用数组+链表实现的,并且头节点中不存放数据

     

可以这样说;当操作是在一列 数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中 间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

所以,如果只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是对其它指定位置的插入、删除操作,最好选择LinkedList