【Java】集合中单列集合详解(一):Collection与List


目录

引言

一、Collection接口

1.1 主要方法 

1.1.1 添加元素

1.1.2 删除元素

1.1.3 清空元素

1.1.4 判断元素是否存在 

1.1.5 判断是否为空

1.1.6 求取元素个数 

1.2 遍历方法

1.2.1 迭代器遍历

1.2.2 增强for遍历

1.2.3 Lambda表达式遍历 

1.2.4 应用场景

二、List接口

2.1 新增方法

2.1.1 指定位置添加元素

2.1.2 删除指定位置元素

2.1.3 修改指定位置元素

2.1.4 返回指定位置元素

2.2 遍历方法

2.2.1 列表迭代器遍历

2.2.2 普通for遍历

2.2.3 应用场景

结语


引言

在Java中,集合框架(Java Collections Framework)是一组设计用来操作对象集合的类和接口。它提供了一种统一的方式来存储和操作对象集合。集合框架主要包括两大类:单列集合(Single-Column Collections)和双列集合(Two-Column Collections,比如Map)。本文将详细讲解单列集合中的两个关键接口:Collection和List。


一、Collection接口

Collection接口是Java单列集合框架的根接口,它定义了一系列用于操作集合的通用方法。所有单列集合类,包括ListSet,都实现了这个接口。


1.1 主要方法 

方法名说明
boolean add(E e)添加元素
boolean remove(E e)把给定的对象从当前集合中移除
void clear()清空集合中的元素
boolean contains(Object o)判断集合中是否存在指定的元素
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中元素的个数

1.1.1 添加元素

Collection是一个接口,不能之间创建它的对象,需要创建其实现类的对象来验证其方法。

// 1.创建集合
Collection<String> coll = new ArrayList<>();// 2.添加数据
coll.add("zhangsan");// 3.打印
System.out.println(coll);

1.1.2 删除元素
// 创建集合
Collection<String> coll = new ArrayList<>();// 添加数据
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangwu");// 打印
System.out.println(coll);// 删除元素
coll.remove("lisi");// 打印
System.out.println(coll);

第二次打印相较于第一次打印会少一个元素:"lisi"。


1.1.3 清空元素
// 创建集合
Collection<String> coll = new ArrayList<>();// 添加数据
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangwu");// 打印
System.out.println(coll);// 清空元素
coll.clear();// 打印
System.out.println(coll);

第一次打印:[zhangsan, lisi, wangwu]。

第二次打印:[]。


1.1.4 判断元素是否存在 

代码紧接上文:

// 判断zhangsan这个元素在集合中是否存在
System.out.println(coll.contains("zhangsan"));

注意:集合中contains()方法底层是依赖equals()方法判断是否存在;因此如果集合中存储的是自定义类,一定要重写equals()方法之后contains()方法才能正确判断元素是否存在


1.1.5 判断是否为空

代码紧接上文:

//判断集合中是否为空
System.out.println(coll.isEmpty()); //false

1.1.6 求取元素个数 

代码紧接上文:

//求取集合中的元素个数
System.out.println(coll.size());

1.2 遍历方法


1.2.1 迭代器遍历

遍历格式:

Iterator<E> it = 集合名称.iterator();
while(it.hasNext()){集合元素类型 变量名 = it.next();System.out.println(变量名);
}

注意:

①循环中不能使用集合的添加或删除方法(可以使用迭代器的删除方法)

②循环只用一次next()方法(使用多次可能会导致NoSuchElementException的异常) 


1.2.2 增强for遍历

JDK5以后出现,其内部原理就是一个Iterator迭代器。

遍历格式:

for(数据类型 变量名 : 集合/数组){}

注意:

①单列集合以及数组才能用增强for循环

②在增强for循环中修改其变量的值,不会改变集合中原来的数据


1.2.3 Lambda表达式遍历 

JDK8以后出现,使用foreach方法。

遍历格式:

集合名称.forEach((参数) -> {//方法体}
);

1.2.4 应用场景

迭代器遍历:在遍历过程需要删除元素

增强for遍历:仅仅想遍历

Lambda表达式遍历:仅仅想遍历


二、List接口

List接口是Collection接口的一个子接口,它继承并扩展了Collection接口的所有方法。List集合是有序的集合,允许存储重复的元素,并且可以通过索引访问元素。


2.1 新增方法

方法名说明
void add(int index,E element)在此集合中的指定位置插入指定的元素
E remove(int index)删除指定索引处的元素,返回被删除的元素
E set(int index,E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素

2.1.1 指定位置添加元素
// 创建集合
List<String> list = new ArrayList<>();// 添加数据
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");// 打印
System.out.println(list);// 指定位置添加元素
list.add(0, "laoliu");// 打印
System.out.println(list);

在此集合中的指定位置插入指定的元素,原来位置上的元素往后挪一个索引。


2.1.2 删除指定位置元素

代码紧接上文:

//删除索引位置为0的元素
String s = list.remove(0);

注意:在调用方法时,如果方法出现重载,优先调用实参与形参类型一致的方法


2.1.3 修改指定位置元素

代码紧接上文:

String result = list.set(0, "abc");
System.out.println(result);
System.out.println(list);

修改指定索引处的元素,返回被修改的元素;被替换的那个元素,在集合中就不存在了。


2.1.4 返回指定位置元素

代码紧接上文:

//返回索引为0的元素
String s = list.get(0);
System.out.println(s);

2.2 遍历方法

相较与Collection接口,List接口多了两种遍历方法。


2.2.1 列表迭代器遍历

遍历格式:

ListIterator<E> it = 集合名称.ListIterator();
while(it.hasNext()){集合元素类型 变量名 = it.next();System.out.println(变量名);
}

注:与迭代器遍历相比,在遍历的过程中可以添加元素 


2.2.2 普通for遍历

size方法跟get方法还有循环结合的方式,利用索引获取到集合中的每一个元素 

for (int i = 0; i < list.size(); i++) {//i:依次表示集合中的每一个索引String s = list.get(i);System.out.println(s);
}

2.2.3 应用场景

迭代器遍历:在遍历过程中需要删除元素

列表迭代器:在遍历过程中需要添加或删除元素

增强for遍历:仅仅只是遍历

Lambda表达式遍历:仅仅只是遍历

普通for遍历: 在遍历过程中需要操作索引


结语

Collection接口是Java集合框架的根接口,提供了基本的集合操作。

List接口是Collection的子接口,支持基于索引的操作,允许存储重复元素,并且是有序的。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL Windows系统初始化、登录、创建用户及数据库

文章目录 PostgreSQL初始化PostgreSQL登录 PostgreSQL初始化 initdb 到安装目录下&#xff0c;找到目录E:\postgresql\bin&#xff08;自己的安装目录&#xff09;&#xff0c;在该目录下使用管理员方式打开cmd窗口。 initdb.exe -D "E:\postgresql\bin" E:\postgre…

Android系統Audio hal

一.Android系統Audio hal简介 Android系统的音频硬件抽象层(HAL)是系统与硬件之间的桥梁,允许音频应用和服务访问底层音频硬件,而无需直接与硬件交互。 主要组件: 音频 HAL 接口:定义了应用和服务如何调用音频硬件的规范。典型的音频操作包括播放、录制、音量控制等。 …

【AIGC】解锁高效GPTs:ChatGPT-Builder中系统提示词Prompt的设计与应用

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;系统提示词系统提示词的作用与重要性系统提示词在构建GPTs中的作用结论 &#x1f4af;ChatGPT-Builder系统提示词的详细解读OpenAI为Builder编写的系统提示词系统提示词对…

高质量SCI论文撰写及投稿丨论文选题、文献调研、实验设计、数据分析、论文结构及语言规范等----AI强大功能

科学研究的核心在于将复杂的思想和实验成果通过严谨的写作有效地传递给学术界和工业界。对于研究生、青年学者及科研人员&#xff0c;如何高效撰写和发表SCI论文&#xff0c;成为提升学术水平和科研成果的重要环节。系统掌握从选题到投稿的全过程&#xff0c;提高论文撰写效率与…

在Openshift(K8S)上通过EMQX Operator部署Emqx集群

EMQX Operator 简介 EMQX Broker/Enterprise 是一个云原生的 MQTT 消息中间件。 我们提供了 EMQX Kubernetes Operator 来帮助您在 Kubernetes 的环境上快速创建和管理 EMQX Broker/Enterprise 集群。 它可以大大简化部署和管理 EMQX 集群的流程&#xff0c;对于管理和配置的知…

医护人员排班|基于springBoot的医护人员排班系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息…

B树的原理与CPP实现

B树是一种自平衡的多叉树数据结构&#xff0c;广泛应用于数据库系统和文件系统中。其设计初衷是为了在存储设备上实现高效的读写操作&#xff0c;特别是在磁盘存储或其他大规模存储场景下。B树的每个节点可以有多个子节点&#xff0c;这与二叉树不同&#xff0c;B树能有效减少树…

深入学习二叉树(BinaryTree)(纯小白进)

目录&#xff1a; 一、 前言二、 正文2.1、 树的概念2.1.1、 树的结构2.1.2、 树的小知识 2.2、 认识二叉树2.2.1、 二叉树的概念2.2.2、 特殊的二叉树 2.3、 实现二叉树2.3.1、 结构2.3.2、 节点数2.3.3、 树深度2.3.4、 前、中、后序遍历 销毁2.3.4.1、 前序遍历2.3.4.2、 中…

《数据结构》课程综合设计(zzu校园导航)(迪杰斯特拉算法)

一、系统&#xff08;问题&#xff09;描述 目前根据郑州大学主校区面积区域的广大&#xff0c;以及南、北核心教学楼的教室分布密集且较多&#xff1b;另外&#xff0c;多数地图软件无法精细导航到一个具体的地点&#xff0c;容易造成原地转圈的烦恼。但是&#xff0c;我们转…

js中map,filter,find,foreach的用法介绍

js中map&#xff0c;filter&#xff0c;find&#xff0c;foreach的用法介绍 在 JavaScript 中&#xff0c;数组提供了一些常用的迭代方法&#xff0c;如 map、filter、find 和 forEach&#xff0c;这些方法允许你对数组中的每个元素进行操作&#xff0c;下面是它们的用法和区别…

Python爬虫实战:利用青果代理IP获取跨境电商数据

文章目录 一、跨境电商数据的作用1.1 市场趋势预测与洞察1.2 消费者行为分析1.3 库存管理优化1.4 定价策略制定 二、爬取目标三、环境准备四、代理IP获取4.1 为什么爬虫要用代理IP&#xff1f;4.2 为什么选择青果代理IP&#xff1f;4.3 青果代理IP领取4.4 利用代码获取IP 五、爬…

excel 表格中url转图片

待处理的单元格通过如下公式获取目标格式&#xff1a; "<table><img src"&A4&" height20></table>" 然后下拉后获取多列的单元格转换结果&#xff0c; 然后将这些转换后的结果拷贝到纯文本文档中&#xff0c; 然后再将纯文本…

新基建下的园区智慧化变革 | 科技驱动未来开放式智慧园区

在数智化浪潮席卷之下&#xff0c;千行百业的数字化转型步伐加快。智慧园区建设借助创新的数字化、智能化技术&#xff0c;对园区内的人、机、物、事进行建模和重构&#xff0c;克服传统园区数据割裂、分散管理、无集成、体验差的问题&#xff0c;构建更智慧的管理方式、服务体…

unity学习-雾的渲染

在Light面板下的Other Settings中勾选fog就会让场景中生成雾气 Coloer&#xff1a;颜色 Mode&#xff1a;预设 Density&#xff1a;密度 当Mode调整为Linear模式会多出两个选项 Start&#xff1a;往前从多少米开始 End&#xff1a;到多少米有雾气 Start&#xff1a;设置…

[单master节点k8s部署]41.部署springcloud项目

在之前的文章中我们配置了mysql和harbor&#xff0c;现在我们可以将一个springcloud部署在k8s集群中了。 项目概述 这个springcloud项目将采用maven进行打包部署。首先安装maven&#xff1a; yum install java-1.8.0-openjdk maven-3.0.5* -y 然后将该项目上传到k8s集群的m…

c#编写的各类应用程序

001 课程简介&#xff0c;C# 语言简介&#xff0c;开发环境准备 (yuque.com)https://www.yuque.com/yuejiangliu/dotnet/timothy-csharp-001 一个Solution里包含多个Project 一、见识 C# 编写的各类应用程序 二、类库的引用&#xff08;黑/白盒引用&#xff09; 1、黑盒引用&a…

C++从入门到起飞之——(multi)set与(multi)map的的使用 全方位剖析!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C从入门到起飞 &#x1f516;克心守己&#xff0c;律己则安 目录 1. 序列式容器和关联式容器 2. set系列的使⽤ 2.1 set和multiset参考⽂档 2.2 set类的介绍 2.3 se…

打印自然常数E

自然常数E 自然常数&#xff0c;符号e&#xff0c;为数学中一个常数&#xff0c;是一个无限不循环小数&#xff0c;且为超越数&#xff0c;其值约为2.718281828459045。它是自然对数函数的底数。 我们打印表达式(11/x)的x次方的值以及获取第一次大于2.718的正整数 新建C#控制…

Linux系统:Ubuntu上安装Chrome浏览器

Ubuntu系统版本&#xff1a;23.04 在Ubuntu系统上安装Google Chrome浏览器&#xff0c;可以通过以下步骤进行&#xff1a; 终端输入以下命令&#xff0c;先更新软件源&#xff1a; sudo apt update 或 sudo apt upgrade终端输入以下命令&#xff0c;下载最新的Google Chrome .…

HarmonyNext保存Base64文件到Download下

本文介绍如何保存Base64的文件到Download下 参考文档地址&#xff1a; 保存用户文件-Harmony Next 用到的是DOWNLOAD模式保存文件 用户在使用save接口时&#xff0c;可以将pickerMode配置为DOWNLOAD模式&#xff0c;该模式下会拉起授权接口&#xff0c;用户确认后会在公共路径…