Iterator迭代器与foreach循环
1. Iterator介绍
在程序的开发中,经常需要遍历集合中所有的元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。Iterator接口也是java集合中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,Collection接口中没有方法是带有索引作为参数的,不能进行常规的for循环遍历,而Iterator主要用来迭代访问 (即遍历) Collection中的元素,因此Iterator对象也被称为迭代器。
迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再取出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
2. 迭代器的构造和使用
2.1 Iterator迭代器是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊,Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象。
2.2 迭代器的使用步骤
使用集合中的方法Iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态写法,左边接口,右边实现类)
使用Iterator接口中的方法hasNext判断还有没有下一个元素
使用Iterator接口中的方法next取出集合中的下一个元素
代码演示:迭代器的使用
[Java]
纯文本查看
复制代码
1 | Iterator<E>iterator(); 返回此次Collection的元素上进行迭代的迭代器 |
2.2 迭代器的使用步骤
使用集合中的方法Iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态写法,左边接口,右边实现类)
使用Iterator接口中的方法hasNext判断还有没有下一个元素
使用Iterator接口中的方法next取出集合中的下一个元素
代码演示:迭代器的使用
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | publicstatic void main(String[] args) {//创建一个集合,左接口,右实现类,多态写法Collection<String> stars = new ArrayList<>();//往集合中增加元素,增加四大天王吧stars.add("刘德华");stars.add("张学友");stars.add("黎明");stars.add("郭富城");//1.使用集合中的方法Iterator()获取迭代器的实现类对象//注意:迭代器也是有泛型的,迭代器的泛型跟着集合走,集合用的什么,它用的什么Iterator<String> iterator = stars.iterator();//2.使用Iterator接口中的方法hasNext判断还有没有下一个元素boolean b = iterator.hasNext();System.out.println(b); //true//3.使用Iterator接口中的方法next取出集合中的下一个元素,循环来判断,全部取出来while(iterator.hasNext()){String s = iterator.next();System.out.println(s); //刘德华 张学友 黎明 郭富城}//此时全部的元素已经取出来,如果还是要再取的话,就会报异常NoSuchElementException//String s = iterator.next();//不一定用while循环,还可以用for循环// for (stars.iterator();iterator.hasNext();){// String s = iterator.next();// System.out.println(s);// }} |
迭代器的指针索引刚开始时是置为-1的,迭代器判断当前的指针的下一位即0号位置处有没有远元素,如果有,就把当前的指针索引向后移一位到0号位置处并把该位置的元素取出来,以此类推。
3. 增强for循环(foreach循环)
增强for循环,也称foreach循环,是JDK1.5以后出来的一个高级循环,专门用于遍历数组和集合的,它的内部原理其实是个iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
格式:
[Java]
纯文本查看
复制代码
1 2 3 | [/b]for(元素的数据类型 变量:Collection集合or数组){//....}[b] |
用于遍历Collection和数组。通常只进行遍历元素,不要再遍历的过程中对集合元素进行增删操作。
代码跑一下:
用法1:遍历数组
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 | [/b]public staticvoid main(String[] args) {//创建一个字符串数组String[] stars = new String[3];stars[0] = new String("周星驰");stars[1] = new String("刘德华");stars[2] = new String("周润发");//用foreach循环遍历数组for(String e : stars){System.out.println(e); //周星驰 刘德华 周润发}} |
用法2:遍历集合
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | publicstatic void main(String[] args) {//创建一个集合,左接口,右实现类,多态写法Collection<String> stars = new ArrayList<>();//往集合中增加元素,增加四大天王吧stars.add("刘德华");stars.add("张学友");stars.add("黎明");stars.add("郭富城");//用foreach循环遍历数组for(String e : stars){System.out.println(e); //刘德华 张学友 黎明 郭富城}} |
如果只是需要做遍历,强烈建议以后都用foreach循环
文章摘自:
h
ttps://blog.csdn.net/weixin_43836046/article/details/97611124
更多技术资讯可关注:gzitcast