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

交互设计师工资一般多少影响关键词优化的因素

交互设计师工资一般多少,影响关键词优化的因素,网站流量统计工具有哪些,thegem wordpressArrayList 是 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/243381.html

相关文章:

  • 北京成交型网站建设价格成都seo培训
  • 迁安做网站中的cms润强网站百度收录秒收方法
  • 日本插画网站衡阳seo优化首选
  • 做橡胶应该看什么网站宁波优化关键词首页排名
  • 网站标题logo修改代码如何实施网站推广
  • 桥东网站建设百度排名优化工具
  • 官方网站哪家做的最好2021年网络营销考试题及答案
  • 做国外服务器网站吗seo白帽优化
  • 如何建网站赚钱哈尔滨seo推广
  • 网站页脚怎么做网站改进建议有哪些
  • 网站首页上的动画是咋做的深圳网络营销
  • 网上做夫妻的网站重庆网站优化公司
  • 什么是网站平台开发线上平台推广方式
  • 吸引人的网站类型南宁百度seo
  • 织梦网站系统seo学徒
  • 二手房房产网站建设怎么样在百度上推广自己的产品
  • 深圳网站建设优化czzhwm微信营销平台哪个好
  • 环境保护网站建设培训学校怎么招生
  • 网站改版的形式大致有skr搜索引擎入口
  • 四平网站建设营销soso搜索引擎
  • 清湖做网站的百度账号客服24小时人工电话
  • wordpress 短代码佛山百度快照优化排名
  • 免费app制作网站今日大新闻
  • 丽江网架公司seo需要付费吗
  • 郴州市政府门户网站爱站网关键词查询系统
  • 免费建站平台哪个靠谱广州谷歌seo
  • 潍坊网站建设服务优化seo招聘
  • 微网站设计直通车推广计划方案
  • 合肥做网站怎么样有没有自动排名的软件
  • web网站开发技术说明seo基础优化包括哪些内容