linkedList add方法源码分析

特点:它基于双向链表实现

  1. **双向链表结构:**每个节点都包含数据部分、前驱指针(指向前一个节点)和后继指针(指向后一个节点)在链表中间插入和删除元素时非常高效
  2. **查询性能较低:**因为它需要从链表的头部或尾部遍历到指定的索引位置
  3. **插入和删除性能高:**插入和删除元素时具有较高的性能。只需要修改元素的前后引用
  4. 线程不安全
  5. 允许存储空元素
  6. 内存开销较大

1.add(E e)

流程大概是这样的:除了开始和结尾节点的数据其他节点的数据都有一个前后指针,用来指向当前节点的上一个节点或当前节点的下一个节点,插入和删除元素的操作比较高效

java 复制代码
    /**
     * Links e as last element. 把当前元素作为最后一个元素
     */
    void linkLast(E e) {
        //1.获取这个集合的最后一个元素,初始添加为null
        final Node<E> l = last;
        //2.将传入的元素和最后一个元素放入node中
        final Node<E> newNode = new Node<>(l, e, null);
        //3.将传入的元素设置为最新元素
        last = newNode;
        //4.如果为null传入的元素就是第一个
        if (l == null)
            first = newNode;
        else
            //5.如果不为null传入的元素就是下一次传入的元素的前一个元素
            l.next = newNode;
        size++;
        modCount++;
    }

通过源码可知,数据的插入默认是从尾部添加的

相关推荐
zander2587 小时前
4. 寻找两个正序数组的中位数:用分割点代替合并
数据结构·算法
敲上瘾8 小时前
redis常用数据类型与操作方法
数据结构·数据库·redis·缓存
牢姐与蒯8 小时前
c++高级数据结构之图(基本概念,存储结构,BFS,DFS,最小生成树)
数据结构·c++·
Tongzhi20269 小时前
考勤数据本地化存储:通芝科技无感考勤一体机的数据安全逻辑
大数据·数据结构·科技·均值算法·数据库开发·推荐算法
她说可以呀9 小时前
Spring-ai-Rag-多文件格式生成 List<Document>
数据结构·list
郝学胜_神的一滴11 小时前
干货版《算法导论》17:双数极值配对与卡牌手牌编码最优解
数据结构·算法
我不会插花弄玉12 小时前
10.list【由浅入深-C++】
数据结构·c++·list
星轨初途12 小时前
LeetCode 热题 100——day6 三数之和
数据结构·c++·算法·leetcode·职场和发展
wabs6661 天前
关于图论【卡码网117.软件构建的思考】
数据结构·算法·软件构建·图论·卡码网
Tongzhi20261 天前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析
运维·数据结构·科技·算法·贪心算法