62,621
社区成员
发帖
与我相关
我的任务
分享
while(iterator.hasNext()){//判断"指针"是否可以指向下一个元素.
//如果有下一个元素,返回true.循环继续
//如果没有下一个元素,返回false,退出循环
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TTT {
/**
* @param args
*/
public static void main(String[] args) {
List list = new ArrayList();
list.add(111);
list.add(222);
Iterator iterator = list.iterator();//初始化"指针",并将"指针"指向list的第一个元素.
while(iterator.hasNext()){//判断"指针"是否可以指向下一个元素.
//如果下一个元素不是最后一个元素,返回true.
//如果下一个元素为最后一个元素,返回false;
System.out.println(iterator.next());//拿出当前元素,并将"指针"指向下一个元素
}
/*
*当然这种解释方法是错误的,因为Java里根本没有"指针".
*但是这么解释比较形象,而且实际操作也是这样的.
*/
}
}
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。
迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
自定义的Collection接口
public interface Collection {
void add(Object o);
int size();
Iterator iterator();
}
自定义的Iterator接口
public interface Iterator {
Object next();
boolean hasNext();
}
自定义的一个ArrayList容器
楼主参照这个ArrayList的iterator()方法的实现
public class ArrayList implements Collection {
Object[] objects = new Object[10];
int index = 0;
public void add(Object o) {
if(index == objects.length) {
Object[] newObjects = new Object[objects.length * 2];
System.arraycopy(objects, 0, newObjects, 0, objects.length);
objects = newObjects;
}
objects[index] = o;
index ++;
}
public int size() {
return index;
}
//返回一个Iterator对象
public Iterator iterator() {
return new ArrayListIterator();
}
//看这个类的实现
private class ArrayListIterator implements Iterator {
private int currentIndex = 0;
@Override
public boolean hasNext() {
if(currentIndex >= index) return false;
else return true;
}
@Override
public Object next() {
Object o = objects[currentIndex];
currentIndex ++;
return o;
}
}
}