Java 之 List<T> 接口的实现:LinkedList
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
隶属于队列List<T>接口下的LinkedList是Java 自实现类的。
如果对应到数据结构中,LinkedList 的样子其实就是一个双链表(其实可以理解为环形双向链表),所以很多东西(LinkedList的优劣)其实我们可以推倒出来,,这个我会在后期写一份博文专门比较ArrayList。
首先我们来看LinkedList 的数据结构

如图有一个Header的结点 用来保存List的头部 同时 Header的pre 指向 整个List 的最后一个Node,而最后一个Node的Next指向header。
LinkedList 有两个构造函数:
无参数的:直接构造一个只含有header Node的空队列
有参数的:接收一个Collection参数collection,调用第一个构造方法构造一个空的链表,之后通过addAll将collection中的元素全部添加到链表中。
一些常用API 如下
(一)增
(1)public boolean add(Object element) 直接添加到队列末尾
(2)public boolean add(int index, Object element) 根据索引添加
---用作栈时可操作
(3)public boolean addFirst(Object element) 添加到队列头部 //ArrayList 无此方法
(4)public boolean addLast(Object element) 添加到队列末尾
addLast()方法和不带索引的add()方法实现的效果一样.
list.add("D");
list.add(0,"D");
list.addFirst("X");
list.addLast("Z");
(二)删
(1)清除数据clear()
(2)LinkedList.remove(Object) 删除指定元素
(3)LinkedList.removeAll() 删除指定list
remove返回的Obj为删掉的元素 主要有三个方法:
(4)public Object remove(int index) 根据索引删除
---用作队栈时可操作
(5)public Object removeFirst() 删除到队列头部
(6)public Object removeLast() 删除到队列末尾
list.remove(0);
list.removeFirst();
list.removeLast();
(三)查
(1)indexOf(Object o)判断o链表中是否存在节点的element和o相等,若相等则返回该节点在链表中的索引位置,若不存在则放回-1。
(2)contains(Object o)方法通过判断indexOf(Object o)方法返回的值是否是-1来判断链表中是否包含对象o。
(3)Get(int index) 获取指定索引下的数据
(4)getFirst():从链表的表头开始去(栈的入口处),//ArrayList没有这个方法
-------以下操作模仿队栈操作------
(4) 获取最初元素System.out.println("链表的第一个元素是 : " + lList.getFirst());
(5)获取最后元素System.out.println("链表最后一个元素是 : " + lList.getLast());
(四)生成新的List
(1)截取生成新的List
List subl = lList.subList(1, 4);
(2)数据复制clone()
调用父类的clone()方法初始化对象链表clone,将clone构造成一个空的双向循环链表,之后将header的下一个节点开始将逐个节点添加到clone中。最后返回克隆的clone对象。
(3)toArray()
创建大小和LinkedList相等的数组result,遍历链表,将每个节点的元素element复制到数组中,返回数组。
(4)遍历数据:Iterator() 有点类似于游标的遍历
注意:
LinkedList是无容量限制的;
LinkedList是非线程安全的;
参考资料;
http://www.cnblogs.com/ITtangtang/p/3948610.html
http://blog.csdn.net/giianhui/article/details/7563150
http://blog.csdn.net/chanxiaoxi/article/details/7438498
Java 之 List<T> 接口的实现:LinkedList的更多相关文章
- Java中的List接口实现类LinkedList
package collection; import java.util.LinkedList; /* * 1.implement List接口 * 2.底层是一个链表结构:查询慢,增删快 * 注意: ...
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...
- java提高篇(二二)-----LinkedList
摘自http://blog.csdn.net/chenssy/article/details/18099417 java提高篇(二二)-----LinkedList 一.概述 LinkedList与 ...
- java 集合之实现类ArrayList 和 LinkedList
List 的方法列表 方法名 功能说明 ArrayList() 构造方法,用于创建一个空的数组列表 add(E e) 将指定的元素添加到此列表的尾部 get(int index) 返回此列表中指定位置 ...
- Java基础-Collection子接口之List接口
Java基础-Collection子接口之List接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们掌握了Collection接口的使用后,再来看看Collection接口中 ...
- java SE基础(Collection接口概述)
Collection接口相关集成关系例如以下图 1. 关于可迭代接口(Iterable) 可迭代接口仅包括一个方法,返回一个在一组T类型元素上进行迭代的迭代器: public ...
- 【转】Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...
- Java 中的集合接口——List、Set、Map
Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...
- 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案
方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...
随机推荐
- hbase的查询scan功能注意点(setStartRow, setStopRow)
来自http://hi.baidu.com/7636553/blog/item/982beb17713bc004972b43ee.html hbase的scan查询功能注意项: Scan scan = ...
- webdriver中处理alert
1 定义isAlertPresent()供调用: public boolean isAlertPresent() { try { driver.switchTo().alert(); re ...
- IO流,File类的测试........课堂加总结
package liu0926; import java.io.File; import java.io.IOException; public class Text01 { public stati ...
- vim 基础命令
第一部份:一般指令模式可用的按鈕說明,游標移動.複製貼上.搜尋取代等 移動游標的方法 h 或 向左方向鍵(←) 游標向左移動一個字元 j 或 向下方 ...
- Console ArcEngine 许可绑定
using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.DataSourcesFile; using ESRI. ...
- 关于JAVA中的String的使用与连接(转)
JAVA中的String连接性能 Java中的String是一个非常特殊的类,使它特殊的一个主要原因是:String是不可变的(immutable). String的不可变性是Ja ...
- C# 常用结构
几种常用类的基本结构如下: public Size( double width, double height ) public Point( double x, double y) public Ve ...
- EL表达式与JSTL
内容包括 EL表达式 EL函数库 JSTL 核心标签库 格式化标签库 SQL标签库 XML标签库 自定义标签库 EL表达式 EL是Expression Language的是缩写,是JSP页面编写的一种 ...
- [办公自动化]一次制作、多场合多次使用的PPT
面试或汇报总结时,你可能需要制作一份PPT来介绍自己.但是这些场合你不一定能讲完所有的内容. 你可以尝试分1分钟.3分钟.5分钟.10分钟的版本来准备. 使用同一份PPT. 没错. 在office20 ...
- GDC2016 Epic Games【Bullet Train】 新风格的VR-FPS的制作方法
追求“舒适”和“快感”的VR游戏设计方法 http://game.watch.impress.co.jp/docs/news/20160318_749016.html [Bullet Tr ...