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

南郑县城乡建设局网站百度查看订单

南郑县城乡建设局网站,百度查看订单,百度广告联盟网站,php做的网站如何盈利ArrayList 是 Java 集合框架中最常用的动态数组实现类,位于 java.util 包中。它基于数组实现,支持动态扩容和随机访问。 1. 特点 动态数组:ArrayList 的底层是一个数组,可以根据需要动态扩展容量。 有序:元素按照插入…

ArrayList 是 Java 集合框架中最常用的动态数组实现类,位于 java.util 包中。它基于数组实现,支持动态扩容和随机访问。

1. 特点

  1. 动态数组ArrayList 的底层是一个数组,可以根据需要动态扩展容量。

  2. 有序:元素按照插入顺序存储,支持按索引访问。

  3. 允许重复元素:可以存储重复的元素。

  4. 允许 null 值:可以存储 null 值。

  5. 非线程安全ArrayList 不是线程安全的,多线程环境下需要额外同步。

  6. 随机访问高效:基于数组实现,随机访问的时间复杂度为 O(1)。

2. 常用方法

2.1 添加元素

  • add(E e):在列表末尾添加元素。

  • add(int index, E element):在指定位置插入元素。

2.2 删除元素

  • remove(int index):删除指定位置的元素。

  • remove(Object o):删除第一个匹配的元素。

2.3 获取元素

  • get(int index):获取指定位置的元素。

2.4 修改元素

  • set(int index, E element):修改指定位置的元素。

2.5 查找元素

  • contains(Object o):判断是否包含指定元素。

  • indexOf(Object o):返回指定元素第一次出现的索引。

  • lastIndexOf(Object o):返回指定元素最后一次出现的索引。

2.6 其他常用方法

  • size():返回列表中的元素数量。

  • isEmpty():判断列表是否为空。

  • clear():清空列表中的所有元素。

  • toArray():将列表转换为数组。

底层实现

3.1 核心字段

ArrayList的核心字段为elementData和size

transient Object[] elementData; // 存储元素的数组
private int size; // 当前元素的数量
  • elementData:是一个 Object 类型的数组,用于存储集合中的元素。

  • size:表示当前 ArrayList 中实际存储的元素数量。

3.2 动态扩容

  • 当数组容量不足时,ArrayList 会自动扩容。

  • 扩容机制:

    1. 新容量通常是旧容量的 1.5 倍(oldCapacity + (oldCapacity >> 1))。

    2. 如果新容量仍然不足,则直接使用所需的最小容量。

    3. 扩容时需要创建新数组并复制元素,时间复杂度为 O(n)。

3.3 初始容量

  • 默认初始容量为 10。

  • 可以通过构造方法指定初始容量:

ArrayList<String> list = new ArrayList<>(100); // 初始容量为 100

线程安全

ArrayList 是 非线程安全 的。在多线程环境下,可能会出现以下问题:

  • 数据不一致:多个线程同时修改 ArrayList 时,可能会导致数据丢失或错误。

  • 并发修改异常:在使用迭代器遍历时,如果另一个线程修改了 ArrayList,可能会抛出 ConcurrentModificationException

  1. 使用Collections.synchronizedList

    List<String> synchronizedList = Collections.synchronizedList(new ArrayList<>());
  2. 使用CopyOnWriteArrayList

    List<String> copyOnWriteArrayList = new CopyOnWriteArrayList<>()

性能分析

  • 随机访问(通过下标):基于数组实现,随机访问的时间复杂度为 O(1)。

  • 查找元素(未知下标): 时间复杂度O(n),通过二分查找的时间复杂度O(logn)。

  • 插入和删除

    • 在末尾插入或删除元素的时间复杂度为 O(1)。

    • 在中间或开头插入或删除元素的时间复杂度为 O(n),因为需要移动元素。

  • 扩容:扩容的时间复杂度为 O(n)。

总结

  • ArrayList 是基于动态数组实现的集合,支持随机访问和动态扩容。

  • 默认初始容量为 10,扩容时容量增加为原来的 1.5 倍。

  • 非线程安全,适合单线程环境使用。

  • 在多线程环境下,可以使用 Collections.synchronizedList 或 CopyOnWriteArrayList 来保证线程安全。

  • 适用于需要频繁访问元素但较少插入和删除的场景。

http://www.dtcms.com/wzjs/259519.html

相关文章:

  • 网站字体特效代码seo快速软件
  • 谁用fun域名做网站了网站如何被百度快速收录
  • 甲蛙网站建设搜狗竞价推广效果怎么样
  • 玉溪网站建设杭州网站建设网页制作
  • 日照做网站的娄底seo
  • 网站建设分金手指排名四企业邮箱登录
  • 做网站的软件叫81什么来着网络营销试卷
  • 人社门户网站建设方案收录优美图片手机版
  • 我想阻止一个网站要怎么做深圳百度推广属于哪家公司
  • 建设广告网站yoast seo教程
  • 一个网站做两个语言模板可以吗如何制作网站赚钱
  • 南阳哪有做网站公司业务推广方案怎么写
  • 网站域名所有人营销软件代理推广
  • 商城开发网站全网整合营销推广方案
  • 做网站要备案吗全国各城市疫情高峰感染进度
  • 建设网站怎么做seo自然优化排名技巧
  • 做网站需要相机吗在线网站建设平台
  • 外贸网站建设大概多少钱微信朋友圈推广软文
  • 大学生做网站的流程网页制作代码模板
  • 化妆品网站做的好的网络营销的特点
  • 建设系统网站首页班级优化大师免费下载
  • myeclipse做网站更改名字百度在线
  • 登陆wordpress后台淮北seo排名
  • 一个企业是如何做网站建设的怎么自己做一个网站
  • 搜索网站开发背景买外链
  • 源码下载网站源码seo公司是什么
  • 保洁公司用哪些网站做推广做网店自己怎么去推广
  • 网站设计报价是多少钱seo入门版
  • 网站用什么技术做成都门户网站建设
  • 用哪个网站做相册视频文件4a广告公司