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. Linux分区练习(1)

    1.作业描述: 4个主分区. 具体实现过程: 打开Linux,在终端中输入:fdisk -uc /dev/sda 可以查看到                   :Command (m for hel ...

  2. C#常用方法集合

    public class Utility:Page { #region 数据转换 /// <summary> /// 返回对象obj的String值,obj为null时返回空值. /// ...

  3. Spring MVC和Struts2的比较的优点

    Spring MVC和Struts2的区别: 机制:spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的.以前认为filter是 ...

  4. Displaying a full list of groups in Odoo's Kanban view

    Kanban view is probably the most flexible view in Odoo. It can be used for many different purposes. ...

  5. poj 2325 Persistent Numbers

    简单的贪心和高精度运算,主要还是要读懂题. #include"iostream" #include"stdio.h" #include"string& ...

  6. JS简单的图片左右滚动

    <div id="scroll" style="overflow:hidden;width:757px;"> <table cellpaddi ...

  7. Spring详细总结

    Spring的特性之一:IOC(控制反转Inverse Of Control),又称依赖注入,是一种重要的面向对象编程的法则来削减计算机程序的耦合问题 也是轻量级spring框架的核心: 依赖注入: ...

  8. 故障处理-ORA-00376/ORA-01110

    数据库实例启动之后发现,9号数据文件发生故障,file 9 cannot be read at this time, ORACLE Instance ilndb2 (pid = 16) - Error ...

  9. Jquery--防止冒泡

    e.stopPropagation();//阻止冒泡

  10. Java Debug调试简单方法--static使用

    Public class Debug { public Debug() { } static void debugPrint(String src) { //System.out.print(src) ...