码迷,mamicode.com
首页 > 其他好文 > 详细

从源码来理解ArrayList和LinkedList区别

时间:2015-08-12 01:25:29      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:arraylist   linkedlist   java   

从源码理解ArrayListLinkedList区别

ArrayList

技术分享

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

技术分享

ArrayList3个构造函数,第一个构造函数指定容量,第二个构造函数默认为一个空数组,第三个构造函数是从集合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区别

标签:arraylist   linkedlist   java   

原文地址:http://blog.csdn.net/u012432475/article/details/47430687

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!