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://wenku.baidu.com/link?url=gOmQ2zaIBAoYeaoIoswqo1Ygc3Kp9xDbGil_qjw_GKnKMEE8iOprNMh2mG_euHIeoK9nYhjHCiVrfrf-LRVC2vn-SerJbfWmzIT8MPj2tVy

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的更多相关文章

  1. Java中的List接口实现类LinkedList

    package collection; import java.util.LinkedList; /* * 1.implement List接口 * 2.底层是一个链表结构:查询慢,增删快 * 注意: ...

  2. Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

    概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...

  3. java提高篇(二二)-----LinkedList

    摘自http://blog.csdn.net/chenssy/article/details/18099417  java提高篇(二二)-----LinkedList 一.概述 LinkedList与 ...

  4. java 集合之实现类ArrayList 和 LinkedList

    List 的方法列表 方法名 功能说明 ArrayList() 构造方法,用于创建一个空的数组列表 add(E e) 将指定的元素添加到此列表的尾部 get(int index) 返回此列表中指定位置 ...

  5. Java基础-Collection子接口之List接口

    Java基础-Collection子接口之List接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们掌握了Collection接口的使用后,再来看看Collection接口中 ...

  6. java SE基础(Collection接口概述)

    Collection接口相关集成关系例如以下图 1. 关于可迭代接口(Iterable)             可迭代接口仅包括一个方法,返回一个在一组T类型元素上进行迭代的迭代器: public ...

  7. 【转】Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

    概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...

  8. Java 中的集合接口——List、Set、Map

    Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...

  9. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案

    方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...

随机推荐

  1. MAT(Memory Analyzer Tool)工具入门介绍

    1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...

  2. mysql 主从同步原理

    Replication 线程 Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们 ...

  3. js通过sessionStorage实现的返回上一页

    通常,我们都会使用比较熟悉的javascript:history.go(-1)来实现返回上一页,此种方法有一个问题就是返回上一页后不能刷新当前页面,给我们的开发带来了一定的不便,显然有时这种方法就不是 ...

  4. Linux_系统管理命令(工作中经常使用到的)

    查看网络配置信息 ifconfig 查看系统资源信息(类似win系统资源管理器) top (ps: load average 负载 Task 进程   Cpus/Mem  swap 交换分区 类似wi ...

  5. Java读取Execl表格数据

    在前面提到用java代码新建一个Execl 表格并添加数据到表格中, 这次写了一个读取Execl表格数据并添加导数据库中的案列 给定对方一个Execl模板表格,如果导入的Execl表格和预订的表格不相 ...

  6. 【HDU2196 Computer】经典树形dp

    http://acm.hdu.edu.cn/showproblem.php?pid=2196 题意:有n台电脑相连,让你求每台电脑与离它最远的那台电脑的距离. 思路:两遍搜索即可,第一遍从上到下,第二 ...

  7. 关于格式转换 “%a.bs”

    这个形式的格式转换符用于输出, 如果a <= b,  那么输出的字符串串长大于等于a, 小于b; 否则, 输出的串长按照a指定的输出. (不够,用空格补齐)

  8. BizTalk开发系列(七) Hello World2

    之前根据BizTalk的订阅原理,使用BizTalk管理控制台创建了第一个应用程序 Hello World.但是由于控制台的开发功能有限,绝大多数的BizTalk程序都是在集成开发环境Visual S ...

  9. gogo

    Qixoe019uip netstat -apn|grep 808*cd /data/pkg/super-car-store./start 端口 jar包名 //是否查询连锁店数据 if(chainC ...

  10. Java 创建过滤器 解析xml文件

    今天写了一个过滤器demo,现在是解析actions.xml文件,得到action中的业务规则:不需要导入任何jar包 ActionFilter过滤器类: package accp.com.xh.ut ...