.网站排版,外汇跟单网站开发,成立公司需要多少费用,mvc5 网站开发之學 pdf编写自己的迭代器的流程是#xff1a;首先实现Iterable接口#xff0c;进而实现该接口中的Iterator iterator()方法#xff0c;该方法返回接口Iterator#xff0c;Iterator接口中封装了next#xff0c;hasnext#xff0c;remove等方法。实现了Iterable接口的类能够通过fo…编写自己的迭代器的流程是首先实现Iterable接口进而实现该接口中的Iterator iterator()方法该方法返回接口IteratorIterator接口中封装了nexthasnextremove等方法。实现了Iterable接口的类能够通过foreach进行遍历分析Iterable与Iterator的区别(1)Iterable是对Iterator的外层封装对其加了一层外衣(2)接口Iterable依赖于Iterator接口(3)直接实现Iterable而不直接实现Iterator的原因Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。如果Collection直接实现Iterator接口势必导致集合对象中包含当前迭代位置的数据(指针)。当集合在不同方法间被传递时由于当前迭代位置不可预置那么next()方法的结果会变成不可预知。除非再为Iterator接口添加一个reset()方法用来重置当前迭代位置。但即时这样Collection也只能同时存在一个当前迭代位置。而Iterable则不然每次调用都会返回一个从头开始计数的迭代器。多个迭代器是互不干扰的。具体例子import Java.util.Iterator;/*** 实现Iterable接口的Person类* author yangqinjiang**/public class Person implements Iterable{/*** 实现Iterable接口中要求实现的方法*/Overridepublic Iterator iterator() {return new MyIterator();//返回一个MyIterator实例对象}/*** MyIterator是内部类实现了Iterator接口的类* 像这样的内部类在网络上有很多这样的写法我这里只是参考他们的写法罢了* author yangqinjiang**/class MyIterator implements Iterator{/**相当于索引*/private int index 0;Overridepublic boolean hasNext() {//只要在调用next()后index自加确保index不等于person的长度return index!person.length;}Overridepublic Person next() {//使用索引来获取person数组中的某一项return person[index];}Overridepublic void remove() {//未实现这个方法}}private String name;private int age;/**person数组是目标操作对象*/private Person[] person;/**为了方便简单点故写一个这样的构造方法*/public Person(int size){personnew Person[size];for (int i 0; i size; i) {person[i]new Person(i, i);}}public void add(Person person){//未实现这个方法}public Person(){//未实现这个方法}public Person(String name,int age){this.namename;this.ageage;}//getterpublic String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic String toString() {return person [name name , age age ];}}推荐阅读