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; //删除比较索引的位置
@Override
public boolean hasNext() {
return cursor != size;
}
@Override
public Object next() {
String value = elements[cursor];
cursor++;
return value;
}
@Override
public 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; //删除比较索引的位置
@Override
public boolean hasNext() {
return cursor != size;
}
@Override
public Object next() {
String value = elements[cursor];
cursor++;
return value;
}
@Override
public 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());
}
}
每天进步一丢丢
完成。
原文:https://www.cnblogs.com/xiaofuzi123456/p/12755418.html