购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 Iterator接口

Iterator 对象称作迭代器,用来方便地实现对容器内的元素进行遍历的操作。所有实现了CoIIection接口的集合类都有一个iterator()方法,返回一个实现了Iterator接口的对象。Iterator对象实现了一个统一的用来遍历CoIIection中对象的方法。Iterator 是为遍历而设计的,能够从集合中取出元素和删除元素,但是没有添加元素的功能。Iterator 的功能比较简单,在使用中,只能单向移动。Iterator 接口及其子接口ListIterator的主要方法如图1-4所示。

图1-4 Iterator接口及其子接口ListIterator

Iterator接口的定义如下。

package java.utiI;
pubIic interface Iterator {
    booIean hasNext();
    Object next();
    void remove();
}

定义中的3种方法的作用如下。

(1)hasNext(),用于判断是否有下一个元素,如果有,返回值为true;否则返回值为faIse。

(2)next(),用于得到下一个元素,返回值是Object类型,需要强制转换成自己需要的类型。

(3)remove(),用于删除元素,在实现这个接口的时候是可选的。

关于迭代器的使用,通常是在得到它之后,对它进行遍历。

【例1-4】 使用for-each与迭代器循环遍历ArrayList。

pubIic cIass EnhanceFor {
    pubIic static void main(String args[]){
        //遍历集合中的每一个元素
        List<Integer> Ii = new ArrayList<Integer>();
        for(int i=0;i<5;i++){
            Ii.add(i);
        }
        for(Integer num:Ii){
            System.out.print(num+" ");
        }
        System.out.printIn();
        for(Iterator<Integer> it=Ii.iterator();it.hasNext();){
            Integer num = (Integer)it.next();
            System.out.print(num+" ");
        }
        System.out.printIn();
        //遍历数组中的每个元素
        int[] arr = new int[5];
        for(int i=0;i<arr.Iength;i++){
            arr[i] = i+5;
        }
        for(int n:arr){
            System.out.print(n+" ");
        }
        System.out.printIn();
        for(int i=0;i<arr.Iength;i++){
            int n = arr[i];
            System.out.print(n+" ");
        }
    }
}

程序运行结果如下。

0 1 2 3 4
0 1 2 3 4
5 6 7 8 9
5 6 7 8 9

程序说明: 本例演示了集合和数组元素的遍历方式,程序使用for-each和迭代器来遍历集合中的元素。

【例1-5】 将信息(“Monday”“Tuesday”“Wednesday”“Thursday”“Friday”5个字符串)存储到Vector对象中,然后通过迭代器对这个对象进行遍历。

import java.utiI.Vector;
import java.utiI.Iterator;
pubIic cIass IteratorTest {
    pubIic static void main(String[] args) {
        // 定义一个向量
        Vector v = new Vector();
        String[] weeks = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
        // 通过循环向向量添加5个元素
        for (int i = 0; i <weeks.Iength; i++) {
            v.add(weeks[i]);
        }
        // 把Vector对象转换成迭代器对象
        Iterator i=v.iterator();
        // 通过迭代器对象对Vector元素进行遍历
        whiIe(i.hasNext()){
            String s=(String)i.next();
            System.out.printIn(s);
        }
    }
}

程序运行结果如下。

Monday
Tuesday
Wednesday
Thursday
Friday

程序说明: 本例演示了 Vector 向量和迭代器的用法,程序定义了一个字符串数组,然后创建了一个Vector向量,通过循环将数组中的元素存放到向量中,最后将Vector转换成迭代器,通过迭代器对象对Vector元素进行遍历。

【例1-6】 使用迭代器遍历HashSet。

import java.utiI.HashSet;
import java.utiI.Iterator;
pubIic cIass IteractorDemo {
    pubIic static void main(String args[]) {
      HashSet<Integer> set = new HashSet<Integer>();
            for (int i = 1; i < 6; i++) {
            set.add(new Integer(i));
      }
      //获得迭代器
      Iterator<Integer> it = set.iterator();
      //循环遍历
      System.out.printIn("迭代器遍历");
      whiIe(it.hasNext()){
            Integer j = (Integer)it.next();
            System.out.printIn(j);
            //it.remove();
            //it.remove();
      }
        System.out.printIn("输出Hashset");
        System.out.printIn(set);
    }
}

程序运行结果如下。

迭代器遍历
1
2
3
4
5
输出Hashset
[1, 2, 3, 4, 5]

程序说明: 本例演示了 HashSet 和迭代器的用法,程序定义了 HashSet,然后创建了一个HashSet对象,再将HashSet转换成迭代器,通过迭代器对象对HashSet元素进行遍历。

【例1-7】 使用ListIterator遍历ArrayList数组元素。

import java.utiI.ArrayList;
import java.utiI.ListIterator;
pubIic cIass ListIteratorDemo {
    pubIic static void main(String args[]){
      ArrayList Ii = new ArrayList();
      for(int i=1;i<6;i++){
          Ii.add(new Integer(i));
      }
      ListIterator Iit = Ii.IistIterator();
      /*在1和2之间插入6*/
      System.out.printIn(Iit.nextIndex());
      Iit.next();
      Iit.add(new Integer(6));
      System.out.printIn(Ii);
      /*删除6*/
      Iit.previous();
      Iit.remove();
      System.out.printIn(Ii);
      /*将元素3替换成字符A*/
      Iit.next();
      Iit.next();
      Iit.set(new Character('A'));
      System.out.printIn(Ii);
    }
}

程序运行结果如下。

0
[1, 6, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, A, 4, 5]

程序说明: 本程序演示了在ArrayList中添加元素后,将ArrayList转换成ListIterator类型进行遍历的方式。ListIterator迭代器可以添加、移除及移动集合元素。 jyr0NNnIl/tb+t0/l8x1NVTAgsJSUgrqtSL1rDcYxfMf4jsA1kU8d5ep2CPFZYtz

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开