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<T> implements Iterable<T> {
        private Node first;//指向头节点的指针
        private Node last;//指向尾节点的指针
        private int modCount = 0;//用来记录修改此链表的次数(增、删、查、改等)
        private int size = 0;//此链表中元素的个数
    
    
        //-----------------------------------------------------------------------
    
        /*
         *实现迭代器
         */
        @Override
        public Iterator<T> iterator() {
            return new MyLinkedListItr();
        }
    
        private class MyLinkedListItr implements Iterator<T> {
            private Node<T> cur = first.next;//记录当前位置的指针
            private int expectedModCount = modCount;//记录迭代器对集合进行修改的次数
            private boolean Removeflag = false;//判断能否进行Remove的标志
    
            @Override
            
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值