我们的口号是,一天一个类,一点也不累 。。

今天要讲的是---LinkedList

首先,还是看看他的组织结构

Class LinkedList<E>

    java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.AbstractSequentialList<E>
java.util.LinkedList<E> Type Parameters:
E - the type of elements held in this collection All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E> public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable

相比上两次介绍的两个类,他的实现接口多了一个Queue & Deque(一个是队列一个是双端队列)

既然这个也实现了List,同样具有List的一些性质,不知大家是否还记得List中的对象容许为NULL.

在API的官网上面明确说了一句:【Note that this implementation is not synchronized.】 也就是说LinkedList也是非线程安全的。

和ArrayList一样,库中存在线程安全的实现方法:

  List list = Collections.synchronizedList(new LinkedList(...));

所以在非线程安全的容器里面会有一个用来记录该对象改变次数的计数器modCount.

【首先声明一下,这个LinkedList里面维持这两个对象,一个是first,一个是last,他们的数据类型是Node的内部类。

  

    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;
}
}

1、构造方法:

  LinkedList()

    Constructs an empty list.

  LinkedList(Collection<? extends E> c)

    Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.
 
2、首先特别解释一下,transient,这样的对象在行进序列话的时候,  是不被需序列化的,是临时的。
   因为在读源码的时候经常会出现这个关键字。
 
3、因为这个是链表,所以提供了一些关于链表的操作。
  e.g. getFirst() getLast()。。。。。。
 
4、值得注意的是从1.6开始,新增了一项称道的方法(虽然自己可以方便实现),这就是能够生成倒序的迭代器。
 /**
* Adapter to provide descending iterators via ListItr.previous
*/
private class DescendingIterator implements Iterator<E> {
private final ListItr itr = new ListItr(size());
public boolean hasNext() {
return itr.hasPrevious();
}
public E next() {
return itr.previous();
}
public void remove() {
itr.remove();
}
}

这样以来就满足了在特定场合的需要。

哇喔,这个类要说的好少啊!~~~

不再说的多少,而在多思多练。

中国有句谚语:

        不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。

最新文章

  1. 作业七:团队项目——Alpha版本冲刺阶段-12
  2. ural 1143. Electric Path
  3. Chrome Apps將是Google送給微軟的特洛伊木馬?
  4. ANT-build.xml编译文件详解
  5. bzoj 2440 简单莫比乌斯反演
  6. jquery 简单弹出层
  7. CF Theatre Square
  8. 24种设计模式--中介者模式【Mediator Pattern】
  9. Struts面试笔记
  10. Windows - 子系统(subsystem)错误
  11. 2 kNN-K-Nearest Neighbors algorithm k邻近算法(一)
  12. ZOJ-2750 Idiomatic Phrases Game---Dijk最短路
  13. memcached command
  14. 理解Device Tree Usage
  15. JS 画框操作
  16. 【转载】ubuntu下/usr/bin和/usr/local/bin的区别
  17. J2SE基础小结
  18. jquery的bind()和trigger()
  19. Java实现打印功能
  20. 形象易懂讲解算法I——小波变换

热门文章

  1. Java对象序列化与反序列化一 JSON
  2. 阵列中条带(stripe)、stripe unit
  3. windows 2008 远程端口3389修改小记
  4. :before :after
  5. JDBC_批量处理语句提高处理速度
  6. CGI PHP安装
  7. 快速配置SSH证书登录
  8. Qt 代码: 子窗口调用父窗口(其实就是用指针直接访问)
  9. Qt探秘——谈ui文件的用法
  10. 用Xamarin 实现园友的 :Android浮动小球与开机自启动