java集合中的迭代器:Iterator

集合的迭代器:iterator
迭代:在Java中”迭代”这个词语等同于”循环”,”遍历”
在集合中的”迭代”主要用来遍历集合中的元素,把List集合和Set集合和Map集合这三种集合都转成集合的”迭代”
集合的迭代器的本质就是把所有集合的遍历方式转换成迭代器这一种遍历方式

实现步骤:(其实这三种类型的集合在转换成迭代器集合的方法是差不多的,下面就来详细讲解:)
在转换之前首先要获取一个集合,为方便阅读,我就把这三种集合的获取代码放在一起,其中Student类,Teacher类,和Person类是早就写好的,其中Student类和Teacher类继承了Person类,子类有自己的属性和方法,也有继承自父类的,因为和迭代器无关,所以就不做赘述.:

public class IteratorClass {
    /**
     * 获取一个List集合
     * @return
     */
    public List<Person> getPerson_List(){
        List<Person> list=new ArrayList<Person>();
        Student stu1=new Student("张三",20,"S001");
        Student stu2=new Student("李四",21,"S002");
        Student stu3=new Student("王五",22,"S003");
        Student stu4=new Student("张四",22,"S004");


        Teacher tea1=new Teacher("赵柳",30,10000);
        Teacher tea2=new Teacher("田兴",31,20000);
        list.add(0,stu1);
        list.add(1,stu2);
        list.add(2,stu3);
        list.add(3,stu4);
        list.add(4,tea1);
        list.add(5,tea2);


        return list;
    }
    /**
     * 获取一个map集合
     */
    public Map<String,Person> getPerson_Map(){
        Map<String,Person> map=new HashMap<String,Person>();
        Student stu1=new Student("张三",20,"S001");
        Student stu2=new Student("李四",21,"S002");
        Student stu3=new Student("王五",22,"S003");
        Student stu4=new Student("张四",22,"S004");


        Teacher tea1=new Teacher("赵柳",30,10000);
        Teacher tea2=new Teacher("田兴",31,20000);
        map.put(stu2.getName(),stu1);
        map.put(stu3.getName(),stu2);
        map.put(stu4.getName(),stu3);
        map.put(stu1.getName(),stu4);
        map.put(tea1.getName(),tea1);
        map.put(tea2.getName(),tea2);


        return map;
    }
    /**
     * 获取一个set集合
     * @return
     */
    public Set<Person> getPerson_Set(){
        Set<Person> set=new HashSet<Person>();
        Student stu1=new Student("张三",20,"S001");
        Student stu2=new Student("李四",21,"S002");
        Student stu3=new Student("王五",22,"S003");
        Student stu4=new Student("张四",22,"S004");


        Teacher tea1=new Teacher("赵柳",30,10000);
        Teacher tea2=new Teacher("田兴",31,20000);
        set.add(stu1);
        set.add(stu2);
        set.add(stu3);
        set.add(stu4);
        set.add(tea1);
        set.add(tea2);


        return set;
    }

-List集合转换成迭代器集合,用迭代器的方式迭代数据元素

/**
     * 把list集合转换成iterator迭代器集合
     * 然后用迭代器的方式迭代数据
     */
    public void iterator_list(){
        List<Person> list=this.getPerson_List();
        Iterator<Person> it=list.iterator();//把list集合转换成迭代器集合
        while(it.hasNext()){//it.hasNext()的功能是问是否有下一个元素,不是取下一个元素
            Person person=it.next();//从迭代器中取出下一个元素
            if(person instanceof Student){
                Student stu=(Student)person;
                System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
            }else if(person instanceof Teacher){
                Teacher tea=(Teacher)person;
                System.out.println("name="+tea.getName()+"age="+tea.getAge()+"Salary="+tea.getSalary());
            }

        }
    }

-Set集合转换成迭代器集合,用迭代器的方式迭代数据元素

/**
     * 把set集合转换成iterator迭代器集合
     * 然后用迭代器的方式迭代数据
     */
    public void iterator_set(){
        Set<Person> set=this.getPerson_Set();
        Iterator<Person> it=set.iterator();//把set集合转换成迭代器集合
        while(it.hasNext()){//it.hasNext()的功能是问是否有下一个元素,不是取下一个元素
            Person person=it.next();//从迭代器中取出下一个元素
            if(person instanceof Student){
                Student stu=(Student)person;
                System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
            }else if(person instanceof Teacher){
                Teacher tea=(Teacher)person;
                System.out.println("name="+tea.getName()+"age="+tea.getAge()+"Salary="+tea.getSalary());
            }

        }
    }

-Map集合转换成迭代器集合,用迭代器的方式迭代数据元素

 /**
     * 把map集合转换成iterator迭代器集合
     * 然后用迭代器的方式迭代数据
     */
    public void iterator_map(){
        Map<String,Person> map=this.getPerson_Map();
        Iterator<Person> it=map.values().iterator();//把map集合转换成迭代器集合
        while(it.hasNext()){//it.hasNext()的功能是问是否有下一个元素,不是取下一个元素
            Person person=it.next();//从迭代器中取出下一个元素
            if(person instanceof Student){
                Student stu=(Student)person;
                System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
            }else if(person instanceof Teacher){
                Teacher tea=(Teacher)person;
                System.out.println("name="+tea.getName()+"age="+tea.getAge()+"Salary="+tea.getSalary());
            }

        }

迭代器的设计模式:解决大量数据遍历的问题,就是用迭代器这一种遍历方式遍历数据
不知道你搞明白了没有?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值