码迷,mamicode.com
首页 > 编程语言 > 详细

java的源码分析 list

时间:2014-09-15 13:03:59      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   java   ar   strong   数据   问题   sp   

List在数据结构中表现为是线性表的方式,其元素以线性方式存储,集合中允许存放重复的对象,List接口主要的实现类有

就数据结构而言,数据的对应方式分为一对一,0对0,一对多,多对多。在数据结构上就是线性表,集合,树,图。而list就是一个线性表。
ArrayList
ArrayList其实就是一组长度可变的数组,当实例化了一个ArrayList,该数据也被实例化了,当向集合中添加对象时,数组的大小也随着改变, 这样它所带来的有优点是快速的随机访问,即使访问每个元素所带来的性能问题也是很小的,但缺点就是想其中添加或删除对象速度慢,当你创建的数组是不确定其 容量,所以当我们改变这个数组时就必须在内存中做很多的处理,如你想要数组中任意两个元素中间添加对象,那么在内存中数组要移动所有后面的对象。
可变的数组这几个词语的含义就是,他的本质仍然是数组,数组的特点就是一块连续的内存,并且读取速度很快,因为可以按照下标访问,直接命中。add需要移动数据,对应的get和set需要的是直接命中
LinkedList
LinkedList是通过节点的连接实现链表的数据结构,向linkedList中插入或删除元素的速度是特别快,而随机访问的速度相对较慢,这个是由 于链表本身的性质造成的,在链表中,每个节点都包含了前一个节点的引用,后一个节点的引用和节点存储值,当一个新节点插入式,只需要修改其中相关的前后关 系节点引用即可,删除节点也是一样。操作对象只需要改变节点的链接,新节点可以存放在内存的任何位置,但也就是因为如此LinkedList虽然存在 get()方法,但是这个方法通过遍历节点来定位所以速度很慢。LinkedList还单独具 addFrist(),addLast(),getFrist(),getLast(),removeFirst(),removeLast()方法,这 些方法使得LinkedList可以作为堆栈,队列,和双队列来使用。

说白了,ArrayList和LinkedList就是数据结构中的顺序存储表和链式存储表。


java的源码分析 list

标签:style   color   使用   java   ar   strong   数据   问题   sp   

原文地址:http://my.oschina.net/u/1455908/blog/313619

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