关闭

从头认识java-9.5 迭代器Iterator

标签: java
1521人阅读 评论(0) 收藏 举报
分类:

这一章节我们来讨论一些迭代器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方法,使得迭代器里面已经指向一个新的对象。


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


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

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

目录


2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:908271次
    • 积分:14289
    • 等级:
    • 排名:第909名
    • 原创:494篇
    • 转载:0篇
    • 译文:2篇
    • 评论:282条
    博客专栏
    最新评论