我们首先来看一下Java中集合的体系

红色的是接口 蓝色的是实现类 alt

其中

List系列的集合,添加的元素是有序的,可重复的,有索引的

有序:存储和获取元素的顺序是一样的

可重复:表示集合中存储的元素是可以重复的

有索引: 我们可以通过索引去获取每一个元素

Set系列的集合,添加的元素是无序的,不重复的,无索引的

无序:存储和获取元素的顺序不是一样的

不重复:表示集合中存储的元素是不能重复的,可以去重

无索引: 我们不能通过索引去获取每一个元素

Collection的基本方法

是一个接口

我们不能直接创建他的对象

我们只能先创建实现类的对象 再去调用方法

alt

我们往List集合里添加数据

方法返回永远是true

Set集合的话 如果添加元素不存在返回true 否则返回false

添加元素

alt

清空元素

alt

删除元素

细节1

因为Collection里的是共性的方法

所以此时不能通过索引进行删除

只能通过元素的对象进行删除

细节2

返回值为布尔类型数值 alt

判断元素是否包含

alt

返回值为布尔类型值

打印值为布尔类型值

底层是通过equals方法判断是否存在的

如果集合中存在的是自定义对象

也想通过contains来判断是否包含

那么在javabean类中 一定要重写equals方法

alt

这里给大家提供一个快捷键

alt + insert

可以直接查找并重写方法

alt

默认会把所有的属性全部重写 alt 这样我们就能比较属性值

判断集合是否为空

alt

这个方法的底层逻辑就是去判断是否有元素

获取集合长度

alt

迭代器遍历

迭代就是遍历的意思

迭代器不依赖索引

Iterator类 迭代器类

迭代器是集合专用的遍历方式

alt alt

利用集合去调用方法获取迭代器对象

这个方法返回的是一个实现了Iterator接口的对象,可以用来遍历集合中的元素。

创建指针

默认指向集合的0索引处

判断当前位置是否有元素 返回布尔值

当迭代器指针指向的位置没有元素

返回false

获取元素 后 移动指针 alt

alt

next方法有两个作用

获取元素 移动指针 alt

细节

迭代器遍历完毕,指针不会复位

循环中只能使用一个next方法

迭代器遍历时 不能使用集合的方法进行增删

如果想要再次遍历集合

要获取一个新的迭代器对象 alt

集合方式删除 不可使用

会出现并发修改异常

只能用迭代器里面的方法 alt

用迭代器提供的remove方法进行删除

总结

alt

增强for循环遍历

alt

定义第三方元素 遍历元素

直接使用第三方元素即可

修改增强for循环中的变量 不会改变集合中原本的元素

快速生成增强for循环 集合名字+for

Lambda表达式遍历

后面的没有名字的类实现了前面的接口

所以要重写抽象方法

alt

foreach的底层原理

其实也会自己遍历集合

依次得到每一个元素

把得到的每一个元素

传递给下面的accept方法

s表示集合里的每一个数据

alt

用Lambda表达式改写

alt

总结

alt

图片资料出自黑马程序员