您的位置:首页 > 编程语言 > Java开发

从源码来理解ArrayList和LinkedList区别

2015-08-11 23:56 393 查看
从源码理解ArrayList和LinkedList区别

ArrayList



ArrayList默认容量为10,实质是一个数组用于存放元素,size表示ArrayList所包含的元素个数。



ArrayList的3个构造函数,第一个构造函数指定容量,第二个构造函数默认为一个空数组,第三个构造函数是从集合c转变为Arraylist的数组







add函数中,先确认数组容量够不够,一开始如果默认初始化(也就是调用第二个构造函数),添加元素时grow出来数组容量为10,构造了一个新的数组并且copy原来数组元素的值,然后element[0]赋值,第二次添加元素时因为elementData != EMPTY_ELEMENTDATA且

minCapacity - elementData.length <0所以直接element[1]赋值,并没有扩充容量,只有当满容量时才会扩容。



remove(int)函数,指移走序号为index的元素,numMoved指的是index后面元素个数,System.arraycopy后面的元素往前推一格,最后的元素置null,返回被删除的value





跟上面remove(int)的原理一样.





如果找得到,则返回序号,否则返回-1

LinkedList

LinkedList存放数据采用的是链表形式存放



first是指向首节点,last是指向尾结点









LinkedList有两个构造函数,第二个构造函数中将集合的元素传到链表上





都是采用链表插入数据的方法





都是采用链表删除元素的方法





链表查找元素的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arraylist linkedlist java