写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
下文主要对java.util.LinkedList<E>进行整体性介绍,主要内容包括:

1、 LinkedList概述

2、 LinkedList中的属性、构造方法、常用方法介绍

3、 LinkedList遍历

参考内容:

1、JDK源码(1.7)

--------------------------------------------------------------------

1、LinkedList概述

java.util.LinkedList<E>是一个什么玩意儿? 它有什么功能? 我们拿LinkedList能够做什么?

简单点说: java.util.LinkedList<E>是一个链表,它是用来存放其他Java对象的,内部是通过链表的形式实现的。

先看下面的图(简略图):

(1) java.util.LinkedList<E>是一个链表,用来存放其它java对象的,只要是java对象就可以往LinkedList里面放。

(2) java.util.LinkedList<E>内部是通过链表来实现的,它实现了所有的列表操作,并且运行插入所有元素(包括null)。

(3) java.util.LinkedList<E>可以用作 堆栈、队列、双端队列、单向链表、双向链表。

java.util.LinkedList<E>的定义如下:

 public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ //fields //constructor //methods //inner class 'ListItr'、'DescendingIterator' //inner class 'Node'
}

从LinkedList类的定义中可以看到,它好复杂哟,定义了那么多的东西,又有父类,又实现了接口等等,这都要怪它的'祖宗',定义了那么多的规范、规则。(@_@)

好了,不多废话,撸起袖子继续干:

下面来看看一副图:

--------------------------------------------------------------------

2、 LinkedList中的属性、构造方法、常用方法介绍

2、1 java.util.LinkedList<E>中的常见属性

 //双端队列中节点个数
transient int size = 0; //始终指向双端队列中第一个节点
transient Node<E> first; //始终指向双端队列中最后一个节点
transient Node<E> last; //序列号
private static final long serialVersionUID = 876323262645176354L; //fast-fail失败机制
protected transient int modCount = 0;

2、2 java.util.LinkedList<E>中链表节点数据类型

    /*
描述双端队列中节点数据类型
*/
private static class Node<E> {
//节点值
E item;
//指向下一个节点
Node<E> next;
//指向上一个节点
Node<E> prev; //构造函数
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}

2、3 java.util.LinkedList<E>中构成方法

第一种: 默认构造方法(无参数构造方法)

 public LinkedList()

第二种: 带初始化子列表参数的构造方法

 public LinkedList(Collection<? extends E> c)

2、4 java.util.LinkedList<E>中常用方法

      队头、尾操作 E getFirst()  获取,但不移除此双端队列的第一个元素
 E getLast()  获取,但不移除此双端队列的最后一个元素
E removeFirst()  获取并移除此双端队列第一个元素
E removeLast()  获取并移除此双端队列的最后一个元素
void addFirst(E e)  将指定元素插入此双端队列的开头
void addLast(E e)  将指定元素插入此双端队列的末尾
     修改操作 boolean add(E e)

将指定元素插入此双端队列的尾部

boolean remove(Object o) 移除此双端队列中的元素o
boolean addAll(Collection<? extends E> c)  将子集合c中的全部插入到此双端队列的尾部
boolean addAll(int index, Collection<? extends E> c)  将子集合c中的全部插入到此双端队列的index开始位置
void clear()  将此双端队列中的元素节点全部清空
    位置访问操作 E get(int index)  返回此双端队列中index位置上的节点
E set(int index, E element)  将此双端队列中index位置上的节点替换为element节点,并返回被替换的节点
void add(int index, E element)  将元素element添加到双端队列的index位置上
E remove(int index)  将此双端队列的index位置上的元素删除
    查询操作 int indexOf(Object o)  查询元素o在此双端队列中的位置(如果不存在则返回-1)
lastIndexOf(Object o)  查询元素o在此双端队列中最后一次出现的位置(如果不存在则返回-1)
boolean contains(Object o)  查询此双端队列中是否有元素o
int size()  返回此双端队列的元素数
     队列操作 E peek()  获取,但不移除此双端队列所表示的队列的头部;如果此双端队列为空,则返回 null
E element()   获取,但不移除此双端队列所表示的队列的头部
E poll()   获取并移除此双端队列所表示的队列的头部;如果此双端队列为空,则返回 null
E remove()   获取并移除此双端队列所表示的队列的头部
boolean offer(E e) 

将指定元素插入此双端队列所表示的队列,如果成功,则返回 true,如果当前没有可用的空间,则返回 false

     双端队列操作 boolean offerFirst(E e)   将指定的元素插入此双端队列的开头
boolean offerLast(E e)   将指定的元素插入此双端队列的末尾
E peekFirst()   获取,但不移除此双端队列的第一个元素;如果此双端队列为空,则返回 null
E peekLast()   获取,但不移除此双端队列的最后一个元素;如果此双端队列为空,则返回 null
E pollFirst()   获取并移除此双端队列的第一个元素;如果此双端队列为空,则返回 null
E pollLast()   获取并移除此双端队列的最后一个元素;如果此双端队列为空,则返回 null
void push(E e)

将一个元素推入此双端队列所表示的堆栈;如果成功,则返回 true,如果当前没有可用空间,则抛出 IllegalStateException

E pop()  从此双端队列所表示的堆栈中弹出一个元素
boolean removeFirstOccurrence(Object o)  从此双端队列移除第一次出现的指定元素
boolean removeLastOccurrence(Object o)  从此双端队列移除最后一次出现的指定元素
Iterator操作 ListIterator<E> listIterator(int index) 返回此双端队列的ListIterator对象 
Iterator<E> descendingIterator()  返回以逆向顺序在此双端队列的元素上进行迭代的迭代器
数组和克隆操作 Object clone()  返回一个此双端队列的浅复制
Object[] toArray()  把此双端队列中的元素以数组的形式返回
T[] toArray(T[] a) 把此双端队列中的元素以数组的形式返回 

--------------------------------------------------------------------

java.util.LinkedList<E>系列文章

java.util.LinkedList<E>(1)  java.util.LinkedList<E>(2)  java.util.LinkedList<E>(3)

java.util.LinkedList<E>(4)  java.util.LinkedList<E>(5)  java.util.LinkedList<E>(6)

java.util.LinkedList<E>(7)  java.util.LinkedList<E>(8)  

--------------------------------------------------------------------

相关知识

java.util.Collection<E>   java.util.AbstractCollection<E>   java.util.List<E>

java.util.AbstractList<E>   java.util.Iterator<E>   java.util.ListIterator<E>

Java中的标记接口   迭代器模式   Java中的深拷贝和浅拷贝  java.util.Arrays

java.util.Queue<E>  java.util.Deque<E>

内功心法 -- java.util.LinkedList<E> (1)的更多相关文章

  1. 内功心法 -- java.util.LinkedList<E> (3)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  2. 内功心法 -- java.util.LinkedList<E> (4)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  3. 内功心法 -- java.util.LinkedList<E> (5)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  4. 内功心法 -- java.util.LinkedList<E> (6)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  5. 内功心法 -- java.util.LinkedList<E> (7)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  6. 内功心法 -- java.util.LinkedList<E> (8)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  7. 内功心法 -- java.util.LinkedList<E> (2)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  8. java.util.ArrayList、java.util.vector和java.util.LinkedList (JDK 1.8.0_111)

    一.java.util.ArrayList 1.1 ArrayList 继承结构 ArrayList实现了RandomAccess,可以随机访问(其实就是通过数组下标访问):实现了Cloneable, ...

  9. JDK1.8源码(六)——java.util.LinkedList 类

    上一篇博客我们介绍了List集合的一种典型实现 ArrayList,我们知道 ArrayList 是由数组构成的,本篇博客我们介绍 List 集合的另一种典型实现 LinkedList,这是一个有链表 ...

随机推荐

  1. thinkphp 漂亮的分页样式

    ---恢复内容开始--- 首先:需要两个文件 page.class.php page.css 1.在TP原有的 page.class.php 文件稍作修改几条代码就可以了, 修改过的地方我会注释, 2 ...

  2. win10-idea2018

    下载jar JetbrainsCrack-2.9-release-enc.jar idea64.exe.vmpotions 配置 -javaagent:D:\devsoft\idea\bin\Jetb ...

  3. python设计模式之迭代器与生成器详解(五)

    前言 迭代器是设计模式中的一种行为模式,它提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示.python提倡使用生成器,生成器也是迭代器的一种. 系列文章 python设计模 ...

  4. css的背景图片background

    1.使用背景图片的标签定设置宽高,没有设置的话,也需要用内容来撑开标签. 2.如果对同一个标签分开设置背景图片和颜色,背景颜色一定要写在背景图片后面,不然会被覆盖 <!DOCTYPE html& ...

  5. Oracle Spatial操作geometry方法

    Oracle Spatial中SDO_GEOMETRY类型: CREATE TYPE SDO_GEOMETRY AS OBJECT( SDO_GTYPE NUMBER,--几何类型,如点线面 SDO_ ...

  6. Codefroces 735D Taxes(哥德巴赫猜想)

    题目链接:http://codeforces.com/problemset/problem/735/D 题目大意:给一个n,n可以被分解成n1+n2+n3+....nk(1=<k<=n). ...

  7. POJ 1661 Help Jimmy(二维DP)

    题目链接:http://poj.org/problem?id=1661 题目大意: 如图包括多个长度和高度各不相同的平台.地面是最低的平台,高度为零,长度无限. Jimmy老鼠在时刻0从高于所有平台的 ...

  8. (三)Spring 之AOP 详解

    第一节:AOP 简介 AOP 简介:百度百科: 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是软件开发中的一个热点,也是Spring框架中的一个 ...

  9. bzoj 1102

    思路:用dfs 会爆栈,巨坑,要用bfs. #include<bits/stdc++.h> #define LL long long #define fi first #define se ...

  10. 烈焰遮天 cocos 手游mmo 源码 解析

    引擎: cocos2.x 代码: c++ 混合 lua 游戏类型: mmo 工程结构: game : 游戏启动地方 gamelogic:接sdk相关,登陆支付统计等 libFramework:主要本游 ...