Java 对比Vector、ArrayList、LinkedList

①引言

在日常生活中能高效的管理和操作数据是非常重要的。Java提供了强大的集合框架,大大提高了开发者的生产力,今天就了解一下有关集合框架方面的问题。

Vector、ArrayList、LinkedList这3者都是实现集合框架的List,也就是所谓的有序集合,因此具体功能也比较近似,比如都可以按照位置进行定位、添加或者删除的操作,都提供迭代器遍历其内容。但因为具体的设计区别,在行为、性能、线程安全等方面。表现又有很大不同。

 

②Vector

Vector是Java早期提供的线程安全的动态数组,如果不需要线程安全,并不建议选择,毕竟同步是有额外开销的。Vector内部是使用对象数组来保存数据,可以根据需要来自动的增加容量,当数组已满时,会创建新的数组,并copy原有数据。

 详细内容请参考 https://www.cnblogs.com/baxianhua/p/9209249.html

 

 ③ArrayList

ArrayList是应用更加广泛的动态数组实现,它本身不是线程安全的,所以性能要好很多。与Vector近似,ArrayList也是可以根据需要调整容量,不过两者的调整逻辑有区别,Vector在扩容时会提高一倍,而ArrayList会增加50% .

 详细内容请参考https://www.cnblogs.com/baxianhua/p/9211265.html

 

 ④LinkedList

是Java提供的双向链表。它不需要象上面两种那样调整容量,它也不是线程安全的。

 详细内容请参考https://www.cnblogs.com/baxianhua/p/9225445.html

 

⑤比较

Vector和ArrayList作为动态数组,其内部元素以数组形式顺序存储,所以非常适合随机访问的场合。除了尾部插入和删除元素,往往性能会较差,比如我们在中间位置插入一个元素,需要移动后面所有元素。而LinkedList进行节点插入删除要高效很多,但是随机访问性能则要比动态数组慢。

 

posted @ 2018-06-21 14:37  筱筱的春天  阅读(326)  评论(0编辑  收藏  举报