迭代器

来源:互联网 发布:汽车车身尺寸数据大全 编辑:程序博客网 时间:2024/05/29 16:28

问题的描述:

迭代器的用法

解决方案:

请看下例:

可以用迭代扫描一个集合。基本的Iterator接口可以向前扫描任何集合。对于一个Set来说,它的迭代是没有顺序的。对于一个List来说,它的迭代的顺序与List中元素的顺序相同,只能向前,不能后退。此外,List对象还支持ListIterator接口,允许迭代向后移动。

示例:

import java.util.*;public class TestList2 {public static void main(String[] args) {List list = new ArrayList();list.add("one");list.add("second");list.add("third");list.add(new Integer(4));list.add(new Float(5.0F));list.add("second"); // truelist.add(new Integer(4)); // true// 使用迭代器,来迭代容器里的所以数据,我们把Iterator叫做迭代器Iterator iterator = list.iterator();while (iterator.hasNext())System.out.println(iterator.next());}}

输出结果为:

one

second

third

4

5.0

second

4

上面例子只用了Iterator,这种迭代器只能向后迭代容器里的数据,有时候需要向前迭代数据,那么就得用ListIterator(列表迭代器),它可以前后滚动容器里的数据。请看下面的例子:

import java.util.*;public class TestList3 {public static void main(String[] args) {List list = new ArrayList();list.add("one");list.add("second");list.add("third");list.add(new Integer(4));list.add(new Float(5.0F));list.add("second"); // truelist.add(new Integer(4)); // trueListIterator iterator = list.listIterator();System.out.println("向下迭代容器里的数据:");while (iterator.hasNext())System.out.println(iterator.next());System.out.println("向上迭代容器里的数据:");while (iterator.hasPrevious())System.out.println(iterator.previous());}}

输出结果为:

向下迭代容器里的数据:

one

second

third

4

5.0

second

4

向上迭代容器里的数据:

4

second

5.0

4

third

second

one

用迭代器还可以修改容器里的数据,只不过只能用当前的迭代器修改,不能两个迭代器同时修改一个容器里的数据!

请看下面事例:

import java.util.*;public class TestList4 {public static void main(String[] args) {List list = new ArrayList();list.add("one");list.add("second");list.add("third");list.add(new Integer(4));list.add(new Float(5.0F));list.add("second"); //truelist.add(new Integer(4)); //trueListIterator listIterator = list.listIterator();Iterator iterator = null;iterator = list.iterator();if (iterator.hasNext())iterator.next();iterator.remove();//会删除该next()返回的元素。//用另个迭代器操作上一个迭代器改变后的数据while (listIterator.hasNext())System.out.println(listIterator.next());}}

会发生如下异常:

    java.util.ConcurrentModificationException 

更多Java异常案例
原创粉丝点击