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

加粗样式# 为什么要有集合(和数组对比)
数组存储的弊端:
数组长度是固定的,一旦创建长度不能变化

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

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

在这里插入图片描述

ArrayList集合

基本介绍

在这里插入图片描述

成员方法

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

上面那些里面是list接口特有的,collection接口没有的是这些:
在这里插入图片描述

单列集合顶层接口Collection

集合体系结构

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

Collection集合

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

单列集合遍历方式

引入:Collection的遍历方式:

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

迭代器遍历

是collection接口中的方法,list接口和set接口继承,然后在每个子类中实现都不一样,ArrayList,HashSet等实现类里的实现代码都不一样。LinkedList里都没实现…
最大的特点:不依赖索引的(但是ArrayList的实现还是依赖了索引…)。
在这里插入图片描述

代码演示和说明:

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

细节

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

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

总结

在这里插入图片描述

增强for遍历

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

lambta表达式遍历(妈的,我看Collection接口里没有forEach方法。。Set实现类里也没有,只有ArrayList有)

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

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

特点

在这里插入图片描述

特有方法

在这里插入图片描述

代码演示及细节

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

list中特有遍历方式

在这里插入图片描述

演示之前的

在这里插入图片描述

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

列表迭代器(list特有)

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

LinkedList集合

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值