黑马程序员--07.集合框架--02.【迭代器Iterator】 - 歆明正航的专栏 - 博客频道 - CSDN.NET...

集合框架--迭代器Iterator

1.    Collection接口(续)

Collection共性方法(续)

(3). 查/获取(续)

[1]. 获取集合大小int size();

[2]. 获取集合中的迭代器:Iterator<E> iterator();

{1}. Iterator 接口中的hasNext()方法

boolean hasNext(); 如果集合仍然有元素可以迭代返回true

{2}. 返回集合中迭代的下一个元素

E next();

举例:使用集合的迭代器来迭代输出集合中的元素

[java] view plain copy
  1. //7.Collection的取出操作  
  2.     public static void methodObtain(){  
  3.         Collectional1 =new ArrayList();  
  4.         al1.add("java01");  
  5.         al1.add("java02");  
  6.         al1.add("java03");  
  7.         al1.add("java04");  
  8.         Iteratorit = al1.iterator();  
  9.    
  10.         while(it.hasNext()){  
  11.             sop("<"+it.next()+">");  
  12.         }  
  13.     }  

打印结果:


2.    迭代器

1). 迭代器的基本概念

(1). 迭代器的通俗含义

迭代器其实就是集合取出元素的方式

(2). 迭代器的特点

Iterator接口共性方法抽取的示意图】


[1]. 取出的动作定义在集合的内部,取出的动作封装到集合的一个内部类

{1}. 这样取出的动作可以直接访问集合中存储的元素

{2}. 由于每种容器数据结构底层实现不相同,所以每种容器都有描述自己这个“取出”动作内部类

[2]. 抽取所有容器取出动作过程共性内容【判断--取出,形成Iterator接口

       尽管取出过程的动作细节不一致,这个取出动作的过程在功能上可以抽取出共性的内容进行判断如果有元素存在进行元素迭代取出

(3). Iterator对象的获取方法

通过Collection接口的方法:Iterator<E> iterator();来获取具体容器类的内部类的对象。

(4). 通过Iterator对象取出集合中元素的方式

Collection实现类迭代元素标准方式

[1]. 通过Iterator对象hasNext()方法进行元素是否存在的判断

[2]. 通过Iterator对象next()方法对存在的元素进行取出

(5). 迭代器源码学习

通过AbstractList.java这个源文件来查看这里面的取出动作的内部类的部分源码

public abstract class AbstractList<E>extendsAbstractCollection<E> implements List<E> {

    ……

    //抽取动作被封装的内部类

    private class Itr implements Iterator<E>{

        ……

        public boolean hasNext() {

            returncursor != size();

        }

 

        publicE next() {

            checkForComodification();

            try {

                Enext = get(cursor);

                lastRet = cursor++;

                return next;

            }catch (IndexOutOfBoundsException e) {

                checkForComodification();

                throw new NoSuchElementException();

            }

        }

        ……

    }

}

 





转载于:https://my.oschina.net/xiaomaoguai/blog/284620

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值