1.自定义实现迭代器

第一种方式:

public class IteratorTest {private String[] elements = {"a", "b", "c", "d", "f", "g"};private int size = elements.length;public Iterator iterator() {return new Itr();}private class Itr implements Iterator {int cursor = 0; //元素的索引int lastRet = 0; //删除比较索引的位置@Overridepublic boolean hasNext() {return cursor != size;}@Overridepublic Object next() {String value = elements[cursor];cursor++;return value;}@Overridepublic void remove() {String reValue = elements[lastRet];int numMoved = size - lastRet - 1;if (numMoved > 0)System.arraycopy(elements, lastRet + 1, elements, lastRet,numMoved);//lastRet++;elements[--size] = null;}}
}  

第二种方式:

public class IteratorTest {private String[] elements = {"a", "b", "c", "d", "f", "g"};private int size = elements.length;public Iterator iterator() {//匿名内部类return new Iterator() {int cursor = 0; //元素的索引int lastRet = 0; //删除比较索引的位置@Overridepublic boolean hasNext() {return cursor != size;}@Overridepublic Object next() {String value = elements[cursor];cursor++;return value;}@Overridepublic void remove() {String reValue = elements[lastRet];int numMoved = size - lastRet - 1;if (numMoved > 0)System.arraycopy(elements, lastRet + 1, elements, lastRet,numMoved);//lastRet++;elements[--size] = null;}};}} 

测试类

public static void main(String[] args) {IteratorTest iteratorTest = new IteratorTest();Iterator iterators = iteratorTest.iterator();while (iterators.hasNext()) {System.out.println(iterators.next());}}

每天进步一丢丢

完成

阿福聊编程
原创文章 15获赞 0访问量 279
关注私信
展开阅读全文