Java基础知识

Java基础之LinkedList知识点总结

2019-01-11  本文已影响3人  第四单元

一.LinkedList的使用

初始化
new LinkedList<E>()
new LinkedList<E>(Collection <? extends E>)
两种初始化方法,第二种可以利用其它Collection初始化。

作为队列使用

作为栈使用

二.LinkedList的底层数据结构

LinkedList的底层数据结构是链表。它的基本元素是一个自己实现的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;
        }
    }

在LinkedList中,维护了链表的第一个节点first、最后一个节点last和当前链表的长度size这三个基本信息。从Node的源码可以看出,它有next、prev两个指针。而实际上LinkedList的构成就是一个双向链表。

三.LinkedList源码中的基本方法

封装了一些对链表进行基本操作的方法,如在头部添加、在头部删除、在尾部添加、在尾部删除、删除某个指定节点等,基于此再实现add(),remove()等方法供外部调用。

四.LinkedList的序列化和饭序列化

与ArrayList类似,LinkedList也实现了自己的readObject和writeObject方法,来支持序列化和反序列化。

五.克隆

LinkedList实现了cloneable接口,重写了clone()方法来实现了拷贝。LinkedList实现的是浅拷贝,即对拷贝对象的改变会影响被拷贝对象。

六.转换为数组

与ArrayList类似,使用toArray(T[] a)可转换为指定类型的数组

七.迭代器

LinkedList实现了比Iterator更为强大的ListIterator迭代器,不仅可以从前往后遍历还可以在遍历过程中倒退,访问之前的元素。

上一篇 下一篇

猜你喜欢

热点阅读