P242 Iterator接口介绍(迭代器)
- 之前学了有很多种集合
- 存储的元素不太一样
- 取出元素的方式也不太一样
- =迭代器:一种通用的用来取出元素的方法
迭代器方法
- Boolean hasNext()
- E next()返回迭代的下一个元素/取出集合种的下一个元素
Iterator迭代器,是一个接口,无法直接使用,需要使用Iterator【接口的实现类对象】,获取实现类的方式比较特殊
Collection接口中有一个方法,叫iterator(),返回的是迭代器的实现类对象
Iteratoriterator()返回在此collection的元素上进行迭代的迭代器
迭代器的使用方法
public static void main(String[]args){
//创建一个集合对象
Collection<String>coll=new ArrayList<>();//创建了一个coll对象
//往集合中添加元素
coll.add("yaa");
....
//要使用迭代器了!
//第一个步骤!
//注意:Iterator<E>接口也是有泛型的,迭代器的泛型跟着集合的泛型走
//多态 接口 实现类对象
Iterator<String> it=coll.iterator();//获取迭代器的实现类对象it
//第二个步骤!
//使用Iterator接口中的方法hasNext判断还有没有下一个元素
boolean b=it.hasNext();
System.out.printIn(b);
//第三个步骤!
//next()取出下一个元素
String s=it.next();
System.out.printIn(s);
搞了4次,输出的是集合中四个元素(不要看都是b和s噢)
👇👇
重复代码太low了!!!
👇👇
用while循环优化(因为不知道有多少元素)
- while(it.hasNext())===>即hasNext()!=false
可以用for循环吗?(可以,了解即可)
P244 迭代器的实现原理
增强for循环
专门用来遍历数组、集合
==》内部实际上是一个Iterator迭代器,【不能对集合中的元素进行增删操作】
格式
用于:遍历collection和数组,不能增删操作
举例
//使用增强for循环遍历数组
private static void demo01(){
int[]arr={1,2,3,4,5};
for(int i:arr){// (集合/数组数据类型 变量名:集合/数组名)
sout(i);//会换行输出
}
//遍历集合
private static void demo02(){
ArrayList<String>list=new ArrayList<>();
list.add("aa");
list.add("s");
for(String s:list){
sout(s);
}
for中写: 数据类型 变量名:集合名
注意事项:
- 新的循环必须有目标,只能是数组/集合