zoukankan      html  css  js  c++  java
  • java ->Iterator (迭代)

    Iterator迭代器概述

    java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。

    Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代

    集合中把这种取元素的方式描述在Iterator接口中。Iterator接口的常用方法如下:

     

    hasNext()方法:用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可以迭代。

    next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。(可以认为是一个全局变量,每调用一次指针往后移动一位,再调用时指针再往后移动一位 ,不会归零)

     

    Iterator迭代方式的代码体现

    在Collection接口描述了一个抽象方法iterator方法,所有Collection子类都实现了这个方法,并且有自己的迭代形式。

     

    进行代码演示:

    //1,创建集合对象

    Collection<String> coll = new ArrayList<String>();

    coll.add("abc1");

    coll.add("abc2");

    coll.add("abc3");

    coll.add("abc4");

     

    //2.获取容器的迭代器对象。通过iterator方法。

    Iterator it = coll.iterator();

    //3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法

    while(it.hasNext()){

        System.out.println(it.next());

    }

     

    /*

    迭代器for循环的形式的使用

    for (Iterator it = coll.iterator(); it.hasNext(); ) {

        System.out.println(it.next());

    }

    */

    注意:在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会发生java.util.NoSuchElementException没有集合元素的错误。

    集合元素的向下转型

    学习到这里,基本知道了Collection接口的简单使用。可是集合中可以存储任何对象,那么存放进去的数据都是还是原来类型吗?不是了,提升成了Object。

    在使用集合时,我们需要注意以下几点:

    集合中存储其实都是对象的地址

    集合中可以存储基本数值吗?jdk1.5版本以后可以存储了。因为出现了基本类型包装类,它提供了自动装箱操作(基本类型à对象),这样,集合中的元素就是基本数值的包装类对象。

    存储时提升了Object。取出时要使用元素的特有内容,必须向下转型。

    Collection coll = new ArrayList();

    coll.add("abc");

    coll.add("aabbcc");

    coll.add(1);

    Iterator it = coll.iterator();

    while (it.hasNext()) {

        //由于元素被存放进集合后全部被提升为Object类型

    //当需要使用子类对象特有方法时,需要向下转型

        String str = (String) it.next();

        System.out.println(str.length());

    }

    注意:如果集合中存放的是多个对象,这时进行向下转型会发生类型转换异常。

    提示:Iterator接口也可以使用<>来控制迭代元素的类型的代码演示如下:

    Collection<String> coll = new ArrayList<String>();

    coll.add("abc");

    coll.add("aabbcc");

    coll.add("cat");

    Iterator<String> it = coll.iterator();

    while (it.hasNext()) {

        String str = it.next();

    //当使用Iterator<String>控制元素类型后,就不需要强转了。获取到的元素直接就是String类型

        System.out.println(str.length());

    }

     

  • 相关阅读:
    函数
    python操作文件
    POJ-2689-Prime Distance(素数区间筛法)
    POJ-2891-Strange Way to Express Integers(线性同余方程组)
    POJ-2142-The Balance
    POJ-1061-青蛙的约会(扩展欧几里得)
    Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing
    Educational Codeforces Round 75 (Rated for Div. 2) C. Minimize The Integer
    Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
    Educational Codeforces Round 75 (Rated for Div. 2) A. Broken Keyboard
  • 原文地址:https://www.cnblogs.com/miaoxingren/p/9413215.html
Copyright © 2011-2022 走看看