我们首先来看一下Java中集合的体系
红色的是接口 蓝色的是实现类
其中
List系列的集合,添加的元素是有序的,可重复的,有索引的
有序:存储和获取元素的顺序是一样的
可重复:表示集合中存储的元素是可以重复的
有索引: 我们可以通过索引去获取每一个元素
Set系列的集合,添加的元素是无序的,不重复的,无索引的
无序:存储和获取元素的顺序不是一样的
不重复:表示集合中存储的元素是不能重复的,可以去重
无索引: 我们不能通过索引去获取每一个元素
Collection的基本方法
是一个接口
我们不能直接创建他的对象
我们只能先创建实现类的对象 再去调用方法
我们往List集合里添加数据
方法返回永远是true
Set集合的话 如果添加元素不存在返回true 否则返回false
添加元素
清空元素
删除元素
细节1
因为Collection里的是共性的方法
所以此时不能通过索引进行删除
只能通过元素的对象进行删除
细节2
返回值为布尔类型数值
判断元素是否包含
返回值为布尔类型值
打印值为布尔类型值
底层是通过equals方法判断是否存在的
如果集合中存在的是自定义对象
也想通过contains来判断是否包含
那么在javabean类中 一定要重写equals方法
这里给大家提供一个快捷键
alt + insert
可以直接查找并重写方法
默认会把所有的属性全部重写 这样我们就能比较属性值
判断集合是否为空
这个方法的底层逻辑就是去判断是否有元素
获取集合长度
迭代器遍历
迭代就是遍历的意思
迭代器不依赖索引
Iterator类 迭代器类
迭代器是集合专用的遍历方式
利用集合去调用方法获取迭代器对象
这个方法返回的是一个实现了Iterator接口的对象,可以用来遍历集合中的元素。
创建指针
默认指向集合的0索引处
判断当前位置是否有元素 返回布尔值
当迭代器指针指向的位置没有元素
返回false
获取元素 后 移动指针
next方法有两个作用
获取元素 移动指针
细节
迭代器遍历完毕,指针不会复位
循环中只能使用一个next方法
迭代器遍历时 不能使用集合的方法进行增删
如果想要再次遍历集合
要获取一个新的迭代器对象
集合方式删除 不可使用
会出现并发修改异常
只能用迭代器里面的方法
用迭代器提供的remove方法进行删除
总结
增强for循环遍历
定义第三方元素 遍历元素
直接使用第三方元素即可
修改增强for循环中的变量 不会改变集合中原本的元素
快速生成增强for循环 集合名字+for
Lambda表达式遍历
后面的没有名字的类实现了前面的接口
所以要重写抽象方法
foreach的底层原理
其实也会自己遍历集合
依次得到每一个元素
把得到的每一个元素
传递给下面的accept方法
s表示集合里的每一个数据
用Lambda表达式改写
总结
图片资料出自黑马程序员