从头认识java-9.5 迭代器Iterator

原创 2015年11月18日 11:26:43

这一章节我们来讨论一些迭代器Iterator。

1.概念

迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式,可在容器(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器的内容。

package com.ray.ch09;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class Test {

	public static void Traversal(Collection<Integer> collection) {
		Iterator<Integer> it = collection.iterator();
		while (it.hasNext()) {
			int rtn = it.next();
			System.out.println(rtn);
		}
	}

	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		for (int i = 0; i < 10; i++) {
			list.add(i);
		}
		HashSet<Integer> set = new HashSet<Integer>();
		for (int i = 0; i < 10; i++) {
			set.add(i);
		}
		System.out.println("---------list---------");
		Traversal(list);
		System.out.println("---------set---------");
		Traversal(set);
	}
}

从上面的代码可以看见,使用迭代器,不管是list还是set,都可以重复使用Traversal这个方法,这样使得代码重用性得到提高。

2.注意点

(1)我们只需要接收容器,即可以在每个对象上面操作

package com.ray.ch09;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test {

	public static void Traversal(Collection<Person> collection) {
		Iterator<Person> it = collection.iterator();
		while (it.hasNext()) {
			Person person = it.next();
			System.out.println(person.getId());
		}
	}

	public static void main(String[] args) {
		ArrayList<Person> list = new ArrayList<Person>();
		for (int i = 0; i < 10; i++) {
			Person person = new Person();
			person.setId(i);
			list.add(person);
		}
		Traversal(list);
	}
}

class Person {
	private int id = 0;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
}

从上面的代码可以看见,我们可以通过迭代器类型的转换,转换成Person类型,然后持有了Person这个对象的引用,那么现在就可以对person对象进行操作。


(2)remove()方法的使用

package com.ray.ch09;

import java.util.ArrayList;
import java.util.Iterator;

public class Test {

	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		for (int i = 0; i < 10; i++) {
			list.add(i);
		}
		Iterator<Integer> iterator = list.iterator();
		iterator.next();// 如果我们注释了这一句,运行时就会抛异常
		iterator.remove();
	}
}

当我们使用remove方法的时候,必须先使用next方法,使得迭代器里面已经指向一个新的对象。


总结:这一章节简单讨论了迭代器的概念,以及相应的注意点。


这一章节就到这里,谢谢。

-----------------------------------

目录


版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 实现迭代器(Iterator)模式

类图 /** * 自定义集合接口, 类似java.util.Collection * 用于数据存储 * @author stone * */ public interface IColl...
  • jjwwmlp456
  • jjwwmlp456
  • 2014年10月11日 12:21
  • 4577

Java学习之Iterator(迭代器)的一般用法 (多方整理)

迭代器(Iterator)   迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 ...
  • qq_27489007
  • qq_27489007
  • 2016年07月25日 20:16
  • 3145

【Java设计模式】(1)迭代器模式Iterator

  • 2015年01月04日 17:19
  • 9KB
  • 下载

java集合迭代器(Iterator)的认识

Iterator(迭代器) 迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细...
  • qq_22860341
  • qq_22860341
  • 2017年06月25日 17:40
  • 195

java Iterator迭代器的使用

  • 2010年06月21日 15:30
  • 59KB
  • 下载

C#面向对象设计模式纵横谈\18 行为型模式Iterator迭代器模式.zip

  • 2009年12月20日 13:03
  • 8.04MB
  • 下载

(行为型模式) Iterator 迭代器模式

  • 2012年09月29日 23:50
  • 171KB
  • 下载

vector容器与iterator迭代器

  • 2012年08月26日 16:47
  • 75KB
  • 下载

迭代器模式(Iterator)C++实现

  • 2014年03月14日 13:09
  • 1KB
  • 下载

设计模式之迭代器模式(Iterator)

  • 2011年07月07日 09:37
  • 12KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从头认识java-9.5 迭代器Iterator
举报原因:
原因补充:

(最多只允许输入30个字)