目录
一、先谈集合:
🔥那我们平常用for循环依赖下标遍历不行嘛,这就与集合的分类有关了。
集合的体系结构:
collection是单列集合的顶层接口
单列集合分为list和set类
list集合特点:有索引、可重复、添加的元素是有序的
set集合特点:无索引、不可重复、添加的元素是无序的
list集合可以通过下标循环遍历,set集合就不行啦
我们下面的这三种遍历方式,那不管什么集合都嘎嘎好使!!!
二、单列集合的三种遍历方式
💧迭代器遍历
1.创建迭代器对象
迭代器Iterator是一个接口,获取它的对象要通过该接口的实现类
java
//多态的方式创建一个arraylist对象
Collection<String> coll = new ArrayList<>();
//添加元素
coll.add("aaa");
//通过iterator方法创建迭代器对象
Iterator<String> it = coll.iterator();//默认获取集合的0索引
2.利用hashNext()与next()方法循环遍历
hashNext()会返回一个bollean类型的值,如果迭代到了集合的末尾,返回false
next()干两件事情 1.获取当前元素 2.移动指针
java
while (it.hasNext()){
String str = it.next();//获取元素 移动指针
System.out.println(str);
}
3.迭代器遍历的三个细节
- 遍历结束后,指针不会复位,如果再调用next方法,会报错没有该实例
- 遍历过程中不能使用集合的方法添加元素,会造成并发异常
- 再次遍历就要重新获取迭代器对象,默认获取集合0索引
💧增强for遍历
1.适用范围
所有的单列集合和数组才能使用增强for遍历
2.增强for遍历的格式
for(变量数据类型 变量名 : 集合名){}
3.实例演示
java
//单列集合和数组才能使用
Collection<String> coll = new ArrayList<>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
//集合名.for
// s是第三方变量
for (String s : coll) {
System.out.println(s);
}
3.增强for的小细节
这里的string s只是一个第三方变量,如果修改了s,不会改变集合里面的值
💧Lambda表达式遍历
1.如何遍历
利用集合里面的 foreach()方法,该方法的参数是一个接口
所以要传入它的实现类对象
**注意:**arraylist中foreach()的底层原理,其实就是普通的for遍历,只是arraylist集合欧
2.语法
集合名.foreach(匿名内部类);
3.实例演示
java
//匿名内部类的方式
coll.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
Consumer该接口是函数式接口,可用Lambda改写
4.利用Lambda表达式改写
java
//简化版的Lambda表达式
coll.forEach( s -> System.out.println(s));
OK就是辣么简单🌹🌹🌹