当前位置: 首页 > news >正文

Java学习打卡-Day18-ArrayList、Vector、LinkedList

ArrayList

  • 底层是数组队列,相当于动态数组。

    ArrayList 中维护了一个Object 类型的数组elementData
    transient Object[] elementData;

  • ArrayList 中可以存储任何类型的对象,包括 null 值。不过,不建议向ArrayList 中添加 null 值,会让代码难以维护比如忘记做判空处理就会导致空指针异常。
  • ArrayList 基本等同于Vector,除了ArrayList 是线程不安全(执行效率高)。

    ArrayListList 的主要实现类,底层使用 Object[]存储,适用于频繁的查找工作,线程不安全 。
    VectorList 的古老实现类,底层使用Object[] 存储,线程安全。

  • 当创建ArrayList 对象时,如果使用的是无参构造器,则初始elementData容量为0。第1次添加,则扩容elementData为10,如需要再次扩容,则扩容elementData为1.5倍。
  • 如果使用的是指定大小的构造器,则初始elementData 容量为指定大小,如果需要扩容,则直接扩容elementData 为1.5倍。

Vector

  • 当创建Vector 对象时,如果使用的是无参构造器,则初始elementData容量默认为10。如需要再次扩容,则扩容elementData为2倍。
  • 如果使用的是指定大小的构造器,则初始elementData 容量为指定大小,如果需要扩容,则直接扩容elementData 为2倍。

LinkedList

  • 底层是双向链表。
  • 可以添加任意类型的元素,包括null值,可重复。
  • 线程不安全。
  • LinkedList中维护了两个属性firstlast分别指向首节点和尾节点。
  • 每个节点(Node对象)又维护了prevnextitem三个属性,其中通过
    prev指向前一个节点,通过next指向后一个节点。

相关文章:

  • Ajax原理笔记
  • JDBC数据库连接池技术详解——从传统连接方式到高效连接管理
  • 零拷贝分析
  • LeetCode热题100JS(49/100)第九天|199|114|105|437|236
  • undo log ,redo log 和binlog的区别?
  • 使用 yum 命令安装 MariaDB 指南
  • 安卓edge://inspect 和 chrome://inspect调试移动设备上的网页
  • 瑞幸需要宇树科技
  • UNION,UNION ALL 的详细用法
  • 【leetcode hot 100 437】路径总和Ⅲ
  • Typora 使用教程(标题,段落,字体,列表,区块,代码,脚注,插入图片,表格,目录)
  • 什么是广播系统语言传输指数 STIPA
  • CCF CSP 第30次(2023.05)(1_仓库规划_C++)
  • 关于运行 npm run serve/dev 运行不起来,node_modules Git忽略不了等(问题)
  • 冰羚杂谈(四)上下游对齐工作节奏
  • 基于SpringBoot+Vue3实现的宠物领养管理平台功能一
  • 算法竞赛-基础算法-位运算
  • 基于cat1的多传感器融合的贵重资产管理解决方案项目说明书
  • 基于Django的交通指示图像识别分析系统
  • Unity WebGL IIS报错无法使用
  • 上海北外滩开发建设五周年交出亮眼答卷,未来五年有何新目标?
  • 金价大跌!足金饰品每克一夜便宜14元,涨势是否已终结?
  • 王毅集体会见加勒比建交国外长及代表
  • 从采购到销售!市场监管总局指导行业协会防控肉品风险
  • 火车站员工迟到,致出站门未及时开启乘客被困?铁路部门致歉
  • 警方通报“网约车司机偷拍女乘客”:已被行政拘留