美文网首页Java基础知识
Java基础之LinkedList知识点总结

Java基础之LinkedList知识点总结

作者: 第四单元 | 来源:发表于2019-01-11 23:02 被阅读3次

    一.LinkedList的使用

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

    作为队列使用

    • offer() 往队里添加元素
    • poll() 获取并删除队列头的元素
    • peek() 获取队列头的元素,但不删除

    作为栈使用

    • push() 往栈中添加元素
    • pop() 弹出栈中的元素
    • peek() 获取栈顶元素,但不弹出

    二.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迭代器,不仅可以从前往后遍历还可以在遍历过程中倒退,访问之前的元素。

    • hasNext() 是否有下一个元素

    • next() 获取下一个

    • hasPrevious() 是否有前一个元素

    • previous() 获取前一个元素

    • remove()删除刚刚next或previous得到的元素;在调用之前必须先调用一次next或previous

    • public ListIterator<E> listIterator(int index) 获取一个ListIterator,index为开始位置,要求index >=0且<=size

    相关文章

      网友评论

        本文标题:Java基础之LinkedList知识点总结

        本文链接:https://www.haomeiwen.com/subject/pdgvrqtx.html