MyLinkedList-基于LinkedList的实现

代码已移植至:https://github.com/GalaxyHe/DataStructure.git  

    

    与上一篇所讲的MyArrayList的实现类似,LinkedList也是我们常使用的Java集合类之一。对于从事计算机学习的人来讲,熟练掌握一个知识点就必须结合深入理解其运行机制和逻辑框架。在实现MyLinkedList之前,我们先来了解LinkedList的有关基本只是要点。 LinkedList是一个双向链表, 它除了有ArrayList的基本操作方法外还额外提供了get(),remove(),insert()方法在LinkedList的首部或尾部。新项插入与删除的开销均很小,但是不易被索引。

        在实现MyLinkedList时,我们要提供三个类:

        1.MyLinkedList类本身,它包含到两端的链、表的大小以及一些方法;

        2.Node类,它是一个私有的嵌套类。一个节点包含数据以及到前一个节点的链和到下一个节点的链,以及其构造方法;

(链的概念可以类比C语言中的指针概念)

        3.LinkedListIterator类,该类 是一个内部类,实现了Iterator接口。并覆写了其中的next()、hasNext()和remove()方法。

附上我实现的代码~

  

  package DataStructure;
    
    import java.util.ConcurrentModificationException;
    import java.util.Iterator;
    import java.util.NoSuchElementException;
    
    /*
     * @author John He
     * @date 2019/2/9
     */
    
    public class MyLinkedList implements Iterable {
        private Node first;//指向头节点的指针
        private Node last;//指向尾节点的指针
        private int modCount = 0;//用来记录修改此链表的次数(增、删、查、改等)
        private int size = 0;//此链表中元素的个数
    
    
        //-----------------------------------------------------------------------
    
        /*
         *实现迭代器
         */
        @Override
        public Iterator iterator() {
            return new MyLinkedListItr();
        }
    
        private class MyLinkedListItr implements Iterator {
            private Node cur = first.next;//记录当前位置的指针
            private int expectedModCount = modCount;//记录迭代器对集合进行修改的次数
            private boolean Removeflag = false;//判断能否进行Remove的标志
    
            @Override
            

你可能感兴趣的:(Java集合框架,LinkedList,MyLinkedList)