Java学习之Iterator(迭代器)的一般用法

迭代器(Iterator)

  迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

  Java中的Iterator功能比较简单,并且只能单向移动:

  (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

  (2) 使用next()获得序列中的下一个元素。

  (3) 使用hasNext()检查序列中是否还有元素。

  (4) 使用remove()将迭代器新返回的元素删除。

  Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

code:

 1  list l = new ArrayList();
 2   l.add("aa");
 3   l.add("bb");
 4   l.add("cc");
 5   for (Iterator iter = l.iterator(); iter.hasNext();) {
 6    String str = (String)iter.next();
 7    System.out.println(str);
 8   }
 9   /*迭代器用于while循环
10  Iterator iter = l.iterator();
11   while(iter.hasNext()){
12    String str = (String) iter.next();
13    System.out.println(str);
14   }
15   */

一个错误的示范:

 1 package com.test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Iterator;
 5 import java.util.List;
 6 
 7 public class Iterator_test {
 8 
 9     public static void main(String[] args) {
10         List<String> lists = new ArrayList<String>();
11         lists.add("A");
12         lists.add("B");
13         lists.add("C");
14         lists.add("D");
15         lists.add("E");
16         lists.add("F");
17         lists.add("G");
18         lists.add("H");
19         Iterator it = lists.iterator();
20         while(it.hasNext()){
21             lists.remove(2);
22             System.out.println(it.next());
23         }
24     }
25 
26 }

即在迭代输出的时候一定不能对集合进行删除元素。

Iterator it = lists.iterator();
        while(it.hasNext()){
            lists.remove(2);
            System.out.println(it.next());
        }

这样是错误的

原文地址:https://www.cnblogs.com/UniqueColor/p/5707815.html