这一章节我们来讨论一些迭代器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-util-iterator.pdfjava-util-iterator.pdfjava-util-iterator.pdf
迭代器Iterator.txt 迭代器Iterator.txt迭代器Iterator.txt
计算机后端-Java-Java核心基础-第24章 集合01 09. 迭代器Iterator的执行原理.avi
迭代器与枚举有两点不同:1. 迭代器允许调用者利用定义良好的语义在迭代期间,从迭代器所指向的 collection 移除元素2. 优化方法名其接口定义如下:Ob
博文“设计模式之--迭代器模式”附属源码,以供参考。
iterator-demo 迭代器设计模式demo
java中Iterator迭代器讲解,基础数据对象。
java Iterator迭代器的使用 java Iterator迭代器的使用 java Iterator迭代器的使用
用java编写的迭代器,实现10数字正反向遍历。
迭代器模式(Iterator Pattern)是一种非常常用的设计模式,这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。 介绍 意图: 提供一种方法顺序访问一个聚合对象中各个...
迭代器iterator可以很方便的遍历所有元素。Mat类支持迭代器的方式对矩阵元素进行遍历。由于使用迭代器就不需要再使用行列数进行操作。
主要介绍了Java集合框架迭代器Iterator实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
计算机后端-Java-Java核心基础-第24章 集合01 11. Iterator迭代器remove()的使用.avi
【Java设计模式】(1)迭代器模式Iterator(代码)
该文档是演示迭代器Iterator的使用方法和源代码,其中包括了Iterator的继承类的讲解和再Iterator中的两种方法
Iterator与Enumeration分别是实现迭代器和枚举器类的接口,下面就带大家来详解Java中的迭代迭代器Iterator与枚举器Enumeration,以及它们之间的区别.
主要介绍了java集合迭代器Iterator中的remove陷阱,需要的朋友可以参考下
cpp-soa-迭代器尝试使用 c++ struct-of-array 迭代器。动机数组结构数据模式通常用于 CUDA 代码以允许合并内存访问。 C++ STL 中的vector容器和thrust device_vector容器可以很容易地用于实现结构数组数据模式。 ...
Java学习之Iterator(迭代器)的一般用法
Java采用了迭代器来为各种容器提供了公共的操作接口,下面通过本文给大家分享Java中迭代器Iterator的使用解析,需要的朋友参考下吧