【Java 集合】List接口 —— ArrayList 与 LinkedList 详解

news2024/11/16 13:35:16

List接口继承自Collection接口,是单列集合的一个重要分支。

在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引(类似于数组中的元素角标)来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。

表1 List集合常用方法

方法声明

功能描述

void add(int index,Object element)

将元素element插入在List集合的指定索引位置

boolean addAll(int index,Collection c)

将集合c包含的所有元素插入到List集合的指定索引位置

Object get(int index)

返回集合索引index处的元素

Object remove(int index)

删除index索引处的元素

Object set(int index, Object element)

将索引index处元素替换成element元素,并将替换后的元素返回

int indexOf(Object o)

返回对象o在List集合中首次出现的位置索引

int lastIndexOf(Object o)

返回对象o在List集合中最后一次出现的位置索引

List subList(int fromIndex, int toIndex)

返回从索引fromIndex(包括)到 toIndex(不包括)处所有元素集合组成的子集合

Object[] toArray()

将集合元素转换为数组

default void sort(Comparator<? super E> c)

根据指定的比较器规则对集合元素排序(JDK 8新方法)

其中sort(Comparator<? super E> c)方法是JDK 8新增的,用于对集合元素进行排序操作,该方法的参数是一个接口类型的比较器Comparator,可以通过前面讲解的Lambda表达式传入一个函数式接口作为参数,来指定集合元素的排序规则。

ArrayList集合

ArrayList是List接口的一个实现类,它是程序中最常见的一种集合。ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。

正是由于ArrayList内部的数据存储结构是数组形式,在增加或删除指定位置的元素时,会创建新的数组,效率比较低,因此不适合做大量的增删操作。但是,这种数组结构允许程序通过索引的方式来访问元素,因此使用ArrayList集合在遍历和查找元素时显得非常高效。

LinkedList集合

LinkedList集合内部包含有两个Node类型的first和last属性维护一个双向循环链表,在链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。

正因为这样的存储结构,所以LinkedList集合对于元素的增删操作表现出很高的效率,LinkedList集合添加元素和删除元素的过程如图1所示。

表1 LinkedList中的特有方法

方法声明

功能描述

void add(int index, E element)

在此列表中指定的位置插入指定的元素。

void addFirst(Object o)

将指定元素插入集合的开头

void addLast(Object o)

将指定元素添加到集合的结尾

Object getFirst()

返回集合的第一个元素

Object getLast()

返回集合的最后一个元素

Object removeFirst()

移除并返回集合的第一个元素

Object removeLast()

移除并返回集合的最后一个元素

boolean offer(Object o)

将指定元素添加到集合的结尾

boolean offerFirst(Object o)

将指定元素添加到集合的开头

boolean offerLast(Object o)

将指定元素添加到集合的结尾

Object peek()

获取集合的第一个元素

Object peekFirst()

获取集合的第一个元素

Object peekLast()

获取集合的最后一个元素

Object poll()

移除并返回集合的第一个元素

Object pollFirst()

移除并返回集合的第一个元素

Object pollLast()

移除并返回集合的最后一个元素

void push(Object o)

将指定元素添加到集合的开头

Object pop()

移除并返回集合的第一个元素

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

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

相关文章

onload_tcpdump命令抓包报错Onload stack [7,] already has tcpdump process

最近碰到Onload 不支持同时运行多个 tcpdump 进程的报错&#xff0c;实际上使用了ps查询当时系统中并没有tcpdump相关进程存在。需要重启服务器本机使用onload加速的相关进程后才能使用onload_tcpdump正常抓包&#xff0c;很奇怪&#xff0c;之前确实没遇到这样的问题&#xff…

生成速度提升70%,32K版本上新,讯飞星火API全新升级!

从“通用”到“真正有用”&#xff0c;大模型应用价值正在释放&#xff01;在C端&#xff0c;AI会议、AI绘图、AI音乐、AI PPT、AI视频等新兴应用层出不穷。在B端&#xff0c;大模型在智能客服、智能营销、知识问答等场景中的应用效果开始显现。 对于绝大多数AI开发者和中小型…

easyExcel使用模版填充excel,合并单元格

一、最终效果 二、制作模版 1、制作填充模版 模版在代码中保存的位置 2、Controller /*** 下载模板*/ RequestMapping(value "exportData") public void exportData(KqKqb kqKqb,HttpServletResponse response, HttpServletRequest request) throws IOExceptio…

大模型时代,程序员能保住头发吗?

10月24日&#xff0c;位于安徽合肥的奥林匹克体育中心&#xff0c;正在举行一场大型科技峰会&#xff0c;奔涌而入的人潮&#xff0c;很快就将主会场挤了个满。这是科大讯飞主办的第六届世界声博会暨2023全球1024开发者节的现场。自2017年以来&#xff0c;这家公司每年都会在10…

如何选择高品质SD卡

如何选择高品质SD卡 SD卡&#xff08;Secure Digital Memory Card&#xff09;是一种广泛使用的存储器件&#xff0c;因其快速的数据传输速度、可热插拔的特性以及较大的存储容量&#xff0c;广泛应用于各种场景&#xff0c;例如在便携式设备如智能手机、平板电脑、运动相机等…

修改timeout问题

1. vad超时时间为10s&#xff0c;10s会出现一个空识别。 解决办法一&#xff1a; 修改/usr/aispeech/conf/duiPlus.cof中的的vad下面的timeout为100000 传给duiPlusNew的vad.timeout要增加&#xff0c;暂时设置为100000&#xff0c;注意单实例配置、多实例配置只需要设置子实例…

【算法】DFS 系列之 穷举/暴搜/深搜/回溯/剪枝(上篇)

【ps】本篇有 9 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1&#xff09;全排列 .1- 题目解析 .2- 代码编写 2&#xff09;子集 .1- 题目解析 .2- 代码编写 3&#xff09;找出所有子集的异或总和再求和 .1- 题目解析 .2- 代码编写 4&#xff09;全排列 II…

PostgreSQL 17 发布了!非常稳定的版本

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

springboot+大数据基于数据挖掘的招聘信息可视化大屏系统【内含源码+文档+部署教程】

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

以到手价为核心的品牌电商价格监测

在当今竞争激烈的电商时代&#xff0c;品牌的价格监测至关重要。传统的页面价监测已无法满足品牌对渠道管控的需求&#xff0c;而到手价监测则成为品牌控价的关键所在。 力维网络&#xff0c;作为深耕数据监测服务多年的专业机构&#xff0c;拥有自主开发的数据监测系统&#…

对spring框架的搭建进行封装---springboot

目录 一.回顾spring 二.springboot概述 三.springboot的特点 四.springboot环境搭建 五.springboot配置文件 六.springboot数据访问管理 七.springboot注解 八.springboot集成mybatis 九.springboot全局异常捕获与处理 一.回顾spring 优点 开源,轻量级,非侵入式的一站式…

Springboot + netty + rabbitmq + myBatis

目录 0.为什么用消息队列1.代码文件创建结构2.pom.xml文件3.三个配置文件开发和生产环境4.Rabbitmq 基础配置类 TtlQueueConfig5.建立netty服务器 rabbitmq消息生产者6.建立常规队列的消费者 Consumer7.建立死信队列的消费者 DeadLetterConsumer8.建立mapper.xml文件9.建立map…

Visual Studio导出动态库

1、创建新项目&#xff0c;选择如下 2、工程目录结构如下 3、编写pch.h文件&#xff0c;内容如下 // pch.h: 这是预编译标头文件。 // 下方列出的文件仅编译一次&#xff0c;提高了将来生成的生成性能。 // 这还将影响 IntelliSense 性能&#xff0c;包括代码完成和许多代码浏…

AI驱动TDSQL-C Serverless 数据库技术实战营-融合智能体与TDSQL-C技术,高效实现二手房数据查询与分析应用

文章目录 什么是TDSQL-C技术创新算力服务器与数据库服务器申请与部署购买 TDSQL-C Mysql Serverless 实例购买HAI高算力服务器 准备工作准备数据下载依赖 案例研发创建数据库写入数据智能体与TDSQL-C 的结合应用第一步配置llama3.1第二步代码开发运行应用测试应用 总结 什么是T…

戏曲多多 1.0.6.0 专为电视端设计的戏曲与生活内容APP,同样适用于安卓手机,方便老年人使用

戏曲多多是一款专为电视端设计的应用程序&#xff0c;也可安装在安卓手机上&#xff0c;特别适合不会使用手机的老年人。该应用包含戏曲、红歌、儿歌、老电影等丰富内容&#xff0c;非常适合老年人的观看喜好。此外&#xff0c;还有广场舞教学、养生太极教程&#xff08;包括太…

Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)

0x01 漏洞概述 Qualitor 8.20及之前版本存在命令注入漏洞,远程攻击者可利用该漏洞通过PHP代码执行任意代码。 0x02 复现环境 FOFA&#xff1a;app"Qualitor-Web" 0x03 漏洞复现 PoC GET /html/ad/adpesquisasql/request/processVariavel.php?gridValoresPopHi…

3 pyqt5 Layout布局(保证主界面缩放各组件也对应缩放)== 主要有Qt Designer和完全代码设置两种设计方式(根据自己情况选择即可)

文章目录 前言一、Layout的类别二、使用Qt Designer进行Layout布局三、完全使用代码进行Layout布局前言 本节我们的http测试的例子,只实现界面方面的逻辑,底层不用管。我们主要的目的是通过这个例子设计界面布局。 我们前面写的界面程序有个问题,如果你用鼠标拖拽主窗口边…

雷达系统中杂波信号的建模与仿真

雷达系统中杂波信号的建模与仿真 2 杂波建模与模拟方法 2.1 杂波建模 杂波可以说是雷达在所处环境中接收到的不感兴趣的回波[4]。就像目标回波一样&#xff0c;杂波也是极为复杂的。为了有效地克服杂波对信号检测的影响&#xff0c;需要知道杂波的幅度特性以及频谱特性。除独…

JavaScript爬虫:数据抓取的艺术与实践

在当今数据驱动的世界中&#xff0c;JavaScript作为一种广泛使用的编程语言&#xff0c;不仅在前端开发中占据重要地位&#xff0c;也可以用于编写爬虫程序&#xff0c;从互联网上抓取有价值的数据。本文将介绍如何使用JavaScript编写爬虫程序&#xff0c;并探讨其在数据抓取中…

Harmony next Native API 开发工程实践

旨在通过文档&#xff0c;了解华为native开发中的关键节点&#xff0c;能够搭建一个比较实用的native功能、 目录 前言 一、napi是什么&#xff1f; 二、简单开始一个napi的实例 1.适配架构配置 2.新增实现 3.官方实例 4.napi与ark通讯的几种方式 Native侧的CallNative Native …