java collection之List

一、ArrayList 是无序,非线程安全的。算法

    底层有数组形式进行存放数据。在添加数据时首先回去检查原有的数组长度是否足够。若是原有的数组长度不足时,就会按照必定规则进行新建一个新的长度的数据,而后将旧数组的数据拷贝过去,而后在新的数据基础上增长元素。源码以下:数组

a、调用add方法安全

b、先判断原有开辟的数组长度是否足够,不足时新建数组开辟地址,并将旧数组拷贝过去数据结构

c、    最后再将须要添加的元素添加进去线程

 

一、Vector是非有序,线程安全的。3d

底层使用数组开辟存储地址存储数据。在添加元素时过程基本与ArrayList一致,区别在于:Vector是线程安全的,以及在自动扩展大小时扩展的算法不同。blog

a、在调用add方法时:源码

b、add方法是使用synchronized关键字修饰,依然是先检查大小,扩展的大小方式与ArrayList有区别基础

c、    最后再将须要添加的元素添加进去add方式是使用synchronized关键字修饰扩展

 

三、LinkedList是有序,非线程安全的

与ArrayList和Vector的区别主要是存储的数据结构不同 。 底层使用的是链表的数据结构来实现的。源码实现以下图

相关文章
相关标签/搜索