首页 > 编程语言 >LinkedList底层源码

LinkedList底层源码

时间:2023-06-21 19:03:49浏览次数:52  
标签:Node LinkedList ArrayList next 源码 public 效率 底层

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
    //外部操作数
    protected transient int modCount = 0;//0
}
public abstract class AbstractSequentialList<E> extends AbstractList<E> {   
}
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>{
    //元素个数
    transient int size = 0;//0
   	//第一个节点
    transient Node<E> first;//null
    //最后一个节点
    transient Node<E> last;//null
    
    public LinkedList() {
    }
    
    //e - 张三
    public boolean add(E e) {
        linkLast(e);
        return true;
    }
    
    //e - 张三
    void linkLast(E e) {
        final Node<E> l = last;
        final Node<E> newNode = new Node<>(l, e, null);
        last = newNode;
        if (l == null)
            first = newNode;
        else
            l.next = newNode;
        size++;
        modCount++;
    }
    
    //节点类
    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<String> list = new LinkedList<>();
		
list.add("张三");
list.add("李四");
list.add("王五");

LinkedList底层源码_LinkedList


  1. LinkedList底层数据结构是什么?
    双向链表
  2. LinkedList存储对象多大容量是多少?
    堆内存容量
  3. ArrayList和LinkedList的区别
    数据结构的区别:
    ArrayList:一维数组
    LinkedList:双向链表 效率的区别:
    添加的效率(ArrayList不扩容的情况):ArrayList快
    添加的效率(ArrayList扩容的情况):LinkedList快
    删除的效率:LinkedList快
    修改的效率:ArrayList快
    查询的效率:ArrayList快

项目中使用ArrayList较多,因为查询需求多,ArrayList查询效率更快,所以一般情况下使用ArrayList。在栈模式或者队列模式的需求下会考虑使用LinkedList

标签:Node,LinkedList,ArrayList,next,源码,public,效率,底层
From: https://blog.51cto.com/u_16154651/6530495

相关文章

  • 手撕Vector底层源码
    publicabstractclassAbstractList<E>extendsAbstractCollection<E>implementsList<E>{//外部操作数protectedtransientintmodCount=0;}publicclassVector<E>extendsAbstractList<E>implementsList<E>{//元素......
  • CentOS7 源码编译安装 Python 3.8.10,开启 SSL 功能
    背景CentOS7自带的Python3,或者通过yum安装的Python3,可能会有无法使用ssl的问题:$python3Python3.8.10(default,Jun132023,14:51:15)[GCC11.2.120220127(RedHat11.2.1-9)]onlinuxType"help","copyright","credits"or"license&qu......
  • 直播平台搭建源码,uni中使用轮播图
    直播平台搭建源码,uni中使用轮播图 <swiperclass="swiper"style="height:90rpx;"circularvertical="true"   :autoplay="true":interval="3000":duration="1000"><swiper-itemv-for="(item,index)in......
  • [万神网络科技]Windows12网页版开源HTML源码
    Windows12网页版开源HTML源码源码介绍Windows12网页版是一个开源项目,使用标准网络技术,例如Html、CSS和Javascript,希望让用户在网络上预先体验Windows12因为这只是概念版,所以内容可能与Windows12正式版本不一致。源码截图下载地址:vx公众号:万神的小屋......
  • 租赁小程序成品|租赁小程序源码|人车网租赁功能
    租赁市场一直是人们比较关注的,有时候我们因为工作需要使用数码产品,但是直接购买并不划算,如果可以进行短期的租赁不仅能满足使用需求,还能节省资金,通过租赁小程序系统用户可以更便捷的选择自己想要租用的产品,而且还给商家和用户都提供了安全性和可靠性,那么租赁小程序成品包含哪些功能......
  • Spring源码核心剖析
    前言SpringAOP作为Spring最核心的能力之一,其重要性不言而喻。然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能。而SpringAOP只是在AOP的基础上将能力集成到SpringIOC中,使其作为bean的一种,从而我们能够很方便的进行使用。一、SpringAOP的使用方式1.1使......
  • XXL-job开源框架相关的源码流程解析。
    XXL-job框架是一个分布式的定时任务框架。他简单快捷。配置方便。而且用途广泛。所以他的源码非常值得一看。对于我来说。其中其自写的RPC框架。以及处理发布多个定时任务的高并发处理。是我打开微服务的大门。这是一篇xxl-job源码的解析与流程分析。比较偏口语化。在这篇随笔中......
  • SLF4J门面日志框架源码探索
    1SLF4J介绍SLF4J即SimpleLoggingFacadeforJava,它提供了Java中所有日志框架的简单外观或抽象。因此,它使用户能够使用单个依赖项处理任何日志框架,例如:Log4j,Logback和JUL(java.util.logging)。通过在类路径中插入适当的jar文件(绑定),可以在部署时插入所需的日志框架。如果要更......
  • 大功率平衡车,扭扭车 图纸 源码 平衡车原理图 pcb 矢量源码非库函数, Bom清单 物料表等
    大功率平衡车,扭扭车图纸源码平衡车原理图pcb矢量源码非库函数,Bom清单物料表等资料。500W功率STM32主控陀螺仪可用于学习电机开发,平衡车独轮车项目开发。ID:452500609590448918......
  • 六轴桌面机械臂 上位机(PC)源码与下位机(单片机)源码
    六轴桌面机械臂上位机(PC)源码与下位机(单片机)源码YID:1690609972944148......