【java集合源码剖析】linkedlist源码剖析-编程开发技术

【java集合源码剖析】linkedlist源码剖析-编程开发技术

ID:30785646

大小:211.90 KB

页数:17页

时间:2019-01-03

【java集合源码剖析】linkedlist源码剖析-编程开发技术_第1页
【java集合源码剖析】linkedlist源码剖析-编程开发技术_第2页
【java集合源码剖析】linkedlist源码剖析-编程开发技术_第3页
【java集合源码剖析】linkedlist源码剖析-编程开发技术_第4页
【java集合源码剖析】linkedlist源码剖析-编程开发技术_第5页
资源描述:

《【java集合源码剖析】linkedlist源码剖析-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、【Java集合源码剖析】LinkcdList源码剖析-编程开发技术[Java集合源码剖析iLinkedList源码剖析原文出处:兰亭风雨LinkedList简介LinkedList是基于双向循环链表(从源码中可以很容易看岀)实现的,除了可以当做链表來操作外,它还可以当做栈、队列和双端队列來使用。LinkedList同样是非线程安全的,只在单线程卜•适合使用。LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆。LinkedList源码剖析LinkedList的源码如卜.(加入了比较详细的注释)

2、:packagejava.util;publicclassLinkedListextendsAbstractSequentialListimplcmentsList,Dcque,Cloneable,java.io.Serializable{//链表的表头,表头不包含任何数据。Entry是个链表类数据结构。privatetransientEntryheader二newEntry(null,null,null);//LinkedList中元素个数privatetransientintsize=0;//默认构造函数:创建一个空的链表publi

3、cLinkedList(){header.next二header,previous二header;}//包含“集合”的构造函数:创建一个包含“集合”的LinkedListpublicLinkedList(Collectionc){this();addAll(c);//获取LinkedList的第一个元索publicEgetFirst(){if(size==O)thrownewNoSuchElementException();//链表的表头header中不包含数据。//这里返回header所指卜•一个节点所包含的数据。returnheader.next

4、.element;}//获取LinkedList的最后一个元索publicEgetLast(){if(size==0)thrownewNoSuchElementException();//由于LinkedList是双向链表;而表头header不包含数据。//因而,这里返回表头header的前一个节点所包含的数据。returnheader.previous.element;}//删除LinkedList的第一个元素publicEremoveFirst(){returnremove(header・next);}//删除LinkedList的最后一个元素publicEremov

5、eLast(){returnremove(header.previous);}//将元素添加到LinkedList的起始位置publicvoidaddFirst(Ee){addBcforc(c,header・next);}//将元素添加到LinkedList的结朿位置publicvoidaddLast(Ee){addBcforc(c,header);//判断LinkedList是否包含元素(o)publicbooleancontains(Objecto){returnindexOf(o)!二-1;}//返回LinkcdList的大小publicintsize(){retu

6、rnsize;}//将元素(E)添加至IjLinkcdList中publicbooleanadd(Ee){//将节点(节点数据是e)添加到表头(header)之前。//即,将节点添加到双向链表的末端。addBefore(e,header);returntrue;}//从LinkedList中删除元素(o)//从链表开始查找,如存在元索(。)则删除该元索并返回true;//否则,返回falscopublicbooleanremove(Objecto){if(o==null){//若。为null的删除情况for(Entrye二header.next;e!二header;

7、e二e.next){if(e.element==nul1){remove(c);returntrue;}}}else{//若o不为mill的删除情况for(Entrye=header,next;e!=header;e=e.next){if(o.equals(e.element)){remove(e);returntrue;returnfalse;//将“集合(c)"添加到LinkedList中。//实际上,是从双向链表的末尾开始,将“集合(c)”添加到双向链表中。publicbooleanaddAll(Collectio

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。