`
李灵晖-raylee
  • 浏览: 128874 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

从头认识java-9.5 迭代器Iterator

 
阅读更多

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


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


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

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

目录


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics