Java集合——Array、ArrayList、LinkedList

news2024/12/26 23:45:43

1. ArrayList和Array的区别

1. 大小和自动扩容

Array:创建时指定大小,大小固定。若数组被创建,其大小不能更改

ArrayList:动态数组实现,可以动态增长或缩小。在不断添加元素时,ArrayList会自动进行扩容

2. 支持泛型

Array不支持泛型,ArrayList可以指定存储的元素类型

3. 存储对象

Array可以存储基本类型数据,也可以存储对象

ArrayList之恶能存储对象,对于基本类型数据需要使用对应的包装类(Integer、Double等)

4. 集合功能

Array是一个简单的数据结构,不提供额外的方法进行元素的增删改查操作

ArrayList是集合框架的一部分,提供了丰富的增删改查方法等

2. ArrayList和LinkedList的区别及其底层实现

ArrayList

基于动态数组,提供快速的随机访问和非常快的遍历操作

  1. 随机访问:时间复杂度为O(1)

  2. 增删元素:在末尾加元素很快,但在其他地方操作可能需要移动后续元素,时间复杂度O(n)

  3. 有扩容开销

使用场景:需要频繁访问元素,且增删操作主要在列表末尾进行,选择ArrayList

LinkedList

基于双向链表,每个元素包含前后元素的引用

  1. 随机访问:效率较低,因为需要从头或从尾开始链接遍历,复杂度为O(n)

  2. 增删元素:在列表任意位置增删元素都很快,这只需要改变几个引用指针,是O(1)复杂度

特殊方法:提供了额外的方法,如addFirst(),addLast(),removeFirst(),removeLast()

使用场景:需要频繁增删元素但访问不是那么常见,选择LinkedList

3. ArrayList扩容机制

  1. ArrayList初始化容量默认为10

  2. 添加元素到ArrayList时,ArrayList会判断是否达到了最大大小Integer.MAX_VALUE,若达到则不再扩容,否则扩容

  3. 扩容计算:grow()

  4. 若新容量满足需求,调用Arrays.copyof方法,实现扩容。若不满足,则新容量大小为当前所需的容量+1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1951412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模式Hash和history

vuerouter有两种路由模式Hash和history。区别:Hash为默认模式,url中包含一个#符号的哈希部分。优势:兼容性好,不需要后端服务器的特殊配置。缺点:不够美观,搜索引擎优化较差。History模式使用的浏览器的His…

Cmake生成的Xcode工程相对路径与绝对路径的问题

Cmake生成的Xcode工程相对路径与绝对路径的问题 文章目录 Cmake生成的Xcode工程相对路径与绝对路径的问题前言修改.pbxproj文件验证工程小结 前言 由于Cmake的跨平台的自动化构建的方便性以及他广泛应用于编译过程的管理,在开发过程中难免用到Cmake。我也使用Cmake…

CTF-NSSCTF[GKCTF 2021]

[GKCTF 2021]easycms 考察: 用扫描工具扫描目录,扫描到后台登录界面/admin.php 题目提示了密码是五位弱口令,试了试弱口令admin和12345直接成功了 任意文件下载 点击设计-->主题然后随便选择一个主题,点击自定义&#xff0…

C++客户端Qt开发——Qt窗口(浮动窗口)

4.浮动窗口 在Qt中,浮动窗口也称之为铆接部件。浮动窗口是通过QDockWidget类来实现浮动的功能。浮动窗口一般是位于核心部件的周围,可以有多个。 设置一个浮动窗口并添加控件 #include "mainwindow.h" #include "ui_mainwindow.h"…

现代Java开发:使用jjwt实现JWT认证

前言 jjwt 库 是一个流行的 Java 库,用于创建和解析 JWT。我在学习spring security 的过程中看到了很多关于jwt的教程,其中最流行的就是使用jjwt实现jwt认证,但是教程之中依然使用的旧版的jjwt库,许多的类与方法已经标记弃用或者…

人工智能GPT技术进步的新时代,你做好准备了吗?

OpenAI 最新发布的 GPT-4o Mini 模型以其卓越的性能和极具竞争力的价格引发了广泛关注。这款模型在提供高级语言理解和生成能力的同时,也在计算资源的消耗和部署成本上做出了显著优化,使得更多开发者能够轻松访问和使用。这篇文章将分析 GPT-4o Mini 在技…

python爬虫【3】—— 爬虫反反爬

一、常见的反爬手段和解决方法 二、splash 介绍与安装 三、验证码识别 图片验证码的处理方案 手动输入(input) 这种方法仅限于登录一次就可持续使用的情况图像识别引擎解析 使用光学识别引擎处理图片中的数据,目前常用于图片数据提取,较少用于验证码…

从零搭建pytorch模型教程(八)实践部分(二)目标检测数据集格式转换

前言 图像目标检测领域有一个非常著名的数据集叫做COCO,基本上现在在目标检测领域发论文,COCO是不可能绕过的Benchmark。因此许多的开源目标检测算法框架都会支持解析COCO数据集格式。通过将其他数据集格式转换成COCO格式可以无痛的使用这些开源框架来训…

【计算机网络】DNS命令练习与抓包分析实验

一:实验目的 1:掌握DNS缓存的清除方法,了解DNS缓存的作用和影响。 2:熟悉nslookup和dig等DNS查询工具的使用,理解DNS查询的基本原理和过程。 3:通过抓包和分析,深入了解DNS查询和响应消息的格…

探索 LLamaWorker 本地大模型API服务的新功能:函数调用

LLamaWorker 是一个基于 LLamaSharp 项目开发的可以在本地运行大模型服务,并提供与 OpenAI / Azure OpenAI 兼容的 API。同时,通过工具提示词的配置,提供函数调用 Function Call 能力,为开发者提供更多的可能。 1. 背景 在人工智…

Robot Operating System——AsyncParametersClient监控Parameters的增删改行为

大纲 同步创建SyncParametersClient设置监控回调回调函数主体测试完整代码 异步创建AsyncParametersClient设置监控回调测试完整代码 在《Robot Operating System——Parameter设置的预处理、校验和成功回调》一文中,我们使用Node::add_post_set_parameters_callbac…

Django项目中报错:django.template.exceptions.TemplateDoesNotExist: index.html

访问127.0.0.1:8000访问出错 查看报错原因 到Django项目当中找到settings.py,找到TEMPLATES中的DIRS: 添加如下代码,并导入OS模块: "DIRS": [os.path.join(BASE_DIR,templates)] 再次访问IP地址:

【JVM基础07】——类加载器-什么是类加载器?类加载器有哪些?双亲委派了解吗?

目录 1- 引言:类加载器1-1 类加载器是什么?(What)1-2 为什么要用类加载器? 作用:类加载的过程?(Why) 2- ⭐核心:类加载器详解(How)2-1 类加载器分类2-2 什么是双亲委派模型?2-3 为什么采用双亲委…

开始尝试从0写一个项目--前端(三)

器材管理板块 添加器材管理导航 src\views\home\Home.vue src\router\index.js src\views\equipment\Equipment.vue <template><div>hello!</div></template> 测试 搜索导航分页查询 src\views\equipment\Equipment.vue <template><div&…

C#、Net6、WebApi报表方案

目录 1 Pdf表单方案 1.1出现如下错误提示: 1.2 字体路径使用 2 Docx报表模板方案 2.1 pdf方案缺陷 2.2 解决方案 3 Spire.Doc报表方案 3.1 Docx方案缺陷 3.2 解决方案 4 插入复选框 5 WebApi文件流下载接口 6 软件获取方式 1 Pdf表单方案 使用【Adobe Acrobat P…

0726,没什么用的SELECT和没用的我

目录 select 可恶&#xff01;&#xff01;&#xff01; 一对多聊天室 select&#xff1a;&#xff08;抄抄抄 最怕人类开始思考 补一对一的 select 喵&#xff1a;&#xff08;抄抄抄 &#xff1f;&#xff1f;今天就这么结束了&#xff1f;&#xff1f;&#xff1f; …

全能Ai助手:写作到设计,宝藏神器帮你事半功倍

今天&#xff0c;就让我们一起踏上这场寻找“隐藏”宝藏的旅程&#xff0c;探索这些AI工具如何改变我们的生活&#xff01; 一、高效生产力的提升之道 1. 文案创作助手 案例&#xff1a;某位自媒体博主使用了一款智能写作工具&#xff0c;不仅大大节省了写作时间&#xff0c;…

JMeter接口测试:测试中奖概率!

介绍 Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具&#xff0c;用于对软件做压力测试。JMeter 最初被设计用于 Web 应用测试&#xff0c;但后来扩展到了其他测试领域&#xff0c;可用于测试静态和动态资源&#xff0c;如静态文件、Java 小服务程序、CGI 脚本、J…

c语言第四天笔记

关于 混合操作&#xff0c;不同计算结果推理 第一种编译结果&#xff1a; int i 5; int sum (i) (i) 6 7 13 第二种编译结果&#xff1a; int i 5; int sum (i) (i) 6 7 7 7 前面的7是因为后面i的变化被影响后&#xff0c;重新赋值 14 第一种编译结果&#xff…

Llama + Dify,在你的电脑搭建一套AI工作流

theme: smartblue 点赞 关注 收藏 学会了 本文简介 最近字节在推Coze&#xff0c;你可以在这个平台制作知识库、制作工作流&#xff0c;生成一个具有特定领域知识的智能体。 那么&#xff0c;有没有可能在本地也部署一套这个东西呢&#xff1f;这样敏感数据就不会泄露了&…