JAVA学习之Itertator迭代器和增强for循环

一、Iterator接口

1、集合有很多种,存储的数据类型不同,那么取出的方式也不同,但是有了迭代器就可以都取出来

2、迭代:即Collection集合元素的通用获取方式。在取元素之前要判断集合中有没有元素,如果有,那就取出来,继续再判断。如果还有就再取出来,一直把集合中的所有元素全部取出。这种取出方式叫做迭代

3、java.util.Iterator接口:迭代器(对集合进行遍历)

有两个常用的方法:

boolean hasNext():如果仍有元素可以迭代,则返回true;判断集合中还有没有下一个元素,有就返回true,没有就返回false;

E next();返回迭代的下一个元素,也就是取出下一个元素

4、Iterator迭代接口中的方法hasNext器是一个接口,无法直接使用,需要使用Iterator的实现类对象,获取实现类的方式比较特殊。 Collection接口中有一个方法叫做Iterator(),这个方法返回的就是迭代器的实现类对象。

5、迭代器的使用步骤:

1、使用集合中的方法Iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)

注意:Iterator<E>接口是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型

2、使用Iterator接口中的方法hasNext判断还有没有下一个元素

3、使用Iterator接口中的方法next取出

二、迭代器的代码实现

package com.company;


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * ClassName:DemoIterator
 * Package:java
 * Description:
 *
 * @Date:2020/2/20 19:23
 * @Author:nana
 */
public class Main {
    public static void main(String[] args) {
//        首先就创建一个集合,并添加元素
        Collection<String > coll =new ArrayList<>();
        coll.add("spring");
        coll.add("summer");
        coll.add("fall");
        coll.add("winter");
/*
1、使用集合中的方法Iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
注意:Iterator<E>接口是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型
2、使用Iterator接口中的方法hasNext判断还有没有下一个元素
3、使用Iterator接口中的方法next取出
*/
        Iterator<String> a=coll.iterator();
        /*
        由于不知道集合中具体有多少元素,所以不方便使用for循环
        这里利用while循环来输出
        * */
        while(a.hasNext()){
            System.out.println(a.next());
        }

    }
}

三、迭代器的实现原理

获取迭代器的实现类对象,并且会把指针指向集合的索引。hasnext判断集合中还有没有下一个元素,next做两件事情:1、取出下一个元素2、会把指针向后移动一位。

四、增强for循环

1、增强for循环(也成for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的,它的内部原理其实是个Iterator迭代器,所以在遍历过程中,不能对集合中的元素进行增删操作。

2、增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写。

所有的单列集合都可以使用增强for循环

增强for循环就是用来遍历集合和数组

3、格式

for(集合或者是数组的数组类型 变量名:集合名/数组名){

sout(变量名)

}

4、代码演示

package com.company;

import java.util.ArrayList;

/**
 * ClassName:Foreach
 * Package:com.company
 * Description:
 *
 * @Date:2020/2/20 20:00
 * @Author:nana
 */
public class Foreach {
    public static void main(String[] args) {
        demo1();
        demo2();
    }
//使用增强for循环遍历数组
    private static void demo2() {
        int[] arr={1,2,3,4};
        for(int i:arr){
            System.out.println(i);
        }
    }

    //使用增强for循环遍历集合
    private static void demo1() {
        ArrayList<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        for(String s:list){
            System.out.println(s);
        }
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值