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

单列集合——list集合和五种遍历方式

为什么要有集合(和数组对比)

数组存储的弊端:
数组长度是固定的,一旦创建长度不能变化

集合:
长度可变,我们只管添加,他内部长度不够会自动扩容加粗样式

但是数组可以存储基本数据类型和引用数据类型,但是集合不能存储基本数据类型,要存就要使用包装类。

在这里插入图片描述

ArrayList集合

基本介绍

在这里插入图片描述

成员方法

在这里插入图片描述
说明:
add方法:添加完直接返回true,不管加啥都返回true,所以我们一般不用返回值。
在这里插入图片描述
remove方法:
当你删除的元素在集合中不存在时返回false。
set方法:
修改元素,将值覆盖,将覆盖之前的元素返回。

单列集合顶层接口Collection

集合体系结构

在这里插入图片描述
list和set集合的区别:
在这里插入图片描述

Collection集合

在这里插入图片描述
注意点:
在这里插入图片描述
在这里插入图片描述
包含方法:
在这里插入图片描述
在这里插入图片描述

单列集合遍历方式

引入:Collection的遍历方式:

以前学习的普通for遍历,是用索引把集合里的元素一一获取出来,但是在set系列的集合里是没有索引的,没有索引就无法通过普通for进行遍历,以前普通for的方式只有list系列的才能用,set系列用不了
所以我们要学习通用的集合遍历方式。
在这里插入图片描述

迭代器遍历

最大的特点:不依赖索引的。
在这里插入图片描述

代码演示和说明:

在这里插入图片描述
获取全部的:
在这里插入图片描述
在这里插入图片描述

细节

1.当到这个位置了,还强行获取元素会报异常:
没有这个元素异常:
在这里插入图片描述
在这里插入图片描述

2.迭代器遍历完毕,指针不会复位
在这里插入图片描述
到这个位置了,就会一直在这,不会回到开始:
在这里插入图片描述
如果想把集合再遍历一遍,只能重新再获取一个迭代器对象。
在这里插入图片描述
3.循环中只能用一次next方法
这个方法只能用一次,如果想多次使用当前遍历到的元素,就要使用一个变量去记录,下面直接使用变量就可以了:
在这里插入图片描述
4.迭代器遍历时,不能用集合的方法进行增加或者删除
如果使用会报错:并发修改异常。
在这里插入图片描述
解决:
看下Iterator迭代器还有哪些方法:
在这里插入图片描述
在这里插入图片描述
总结:
在这里插入图片描述

总结

在这里插入图片描述

增强for遍历

在这里插入图片描述
在这里插入图片描述

lambta表达式遍历

使用forEach方法
在这里插入图片描述
在这里插入图片描述

list集合特有方法和特有遍历方式

特点

在这里插入图片描述

特有方法

在这里插入图片描述

代码演示及细节

add:
在这里插入图片描述
remove:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

list中特有遍历方式

在这里插入图片描述

演示之前的

在这里插入图片描述

公有的三个:
在这里插入图片描述
list特有的:
在这里插入图片描述

列表迭代器(list特有)

ListIterator也是一个接口,是上面学习的迭代器的子接口
在这里插入图片描述
要掌握的方法:
在这里插入图片描述
这两个方法和next方法是反过来的,next方法是从前往后移动迭代器里的指针,这里previous是从后往前反过来去移动。这两个方法不需要掌握了解一下即可。
在这里插入图片描述
代码演示:
在这里插入图片描述

LinkedList集合

在这里插入图片描述
每个节点中都有三部分:
第一部分用来记录前一个节点地址值,
第二部分用来记录真实要存储的数据
第三部分用来记录下一个节点的地址值

这样就可以从头找到尾,利用第一部分地址值也可以从后找到前。
在这里插入图片描述

因为链表中操作头和尾速度比较快,所以linkerlist提供很多直接操作首尾元素的特有api。
这些方法混个眼熟就可以了,以后用的不多。
在这里插入图片描述

相关文章:

  • 基于shardingsphere的分库分表方案
  • 【C++】尾置返回类型(Trailing Return Type)总结
  • AI写PPT可以用吗?我测试了3款AI写PPT工具,分享感受
  • Graphics——基于.NET 的 CAD 图形预览技术研究与实现——CAD c#二次开发
  • 【NGINX】 -10 keepalived + nginx + httpd 实现的双机热备+ 负载均衡
  • 湖北理元理律师事务所:债务管理的社会价值探索
  • Science Robotics 封面论文:基于形态学开放式参数化的仿人灵巧手设计用于具身操作
  • 基于Java+MySQL+Servlet的留言系统开发全解析
  • uniapp中的easycom工作机制
  • 构建 TypoView:一个富文本样式预览工具的全流程记录
  • Go 语言中的一等公民(First-Class Citizens)
  • 数位和:从定义到编程实现
  • jupyter启动出现OSError: [Errno 28] No space left on device
  • atcoder C - ~
  • 文件IO之标准IO
  • Binary Prediction with a Rainfall Dataset-(回归+特征工程+xgb)
  • 入门OpenTelemetry——应用自动埋点
  • ColorAid —— 一个面向设计师的色盲模拟工具开发记
  • 多模态大语言模型arxiv论文略读(八十)
  • Git多人协作
  • 国家统计局:要持续加大好房子建设供应力度,积极推动城市更新行动和保障房建设
  • “80后”北大硕士罗婕履新甘肃宁县县委常委、组织部部长
  • 广州医药集团有限公司原党委书记、董事长李楚源被“双开”
  • 上海国际碳中和博览会下月举办,首次打造民营经济专区
  • 征稿启事|澎湃·镜相第三届非虚构写作大赛暨2026第六届七猫现实题材征文大赛
  • 外企聊营商|武田制药:知识产权保护助创新药研发