请问JAVA中到底什么东西是迭代器啊?????


迭代是指循环..迭代器是指实现该循环的一种方式......

我的疑惑就是 迭代器 是一个方法或者一个类么? 怎么只听不见啊?

如果不是的话 那么 iterator()方法又是什么东西啊? 他是干什么用的?
...全文
790 22 打赏 收藏 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
notlogin 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 notlogin 的回复:]

肤浅点解释,你就把迭代器看成一个指针就行了

Java code

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class TTT {

/**
* @param args
*/
public static void main……
[/Quote]


有点笔误,这里应该这么写

while(iterator.hasNext()){//判断"指针"是否可以指向下一个元素.
//如果有下一个元素,返回true.循环继续
//如果没有下一个元素,返回false,退出循环
notlogin 2010-04-22
  • 打赏
  • 举报
回复
肤浅点解释,你就把迭代器看成一个指针就行了


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里根本没有"指针".
*但是这么解释比较形象,而且实际操作也是这样的.
*/
}

}
minyongbing 2010-04-21
  • 打赏
  • 举报
回复
想知道原因的话可以看源码啊
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 quxiaoyong 的回复:]
迭代器的实现是一种设计模式,在java中只要会用Iterator这个接口就可以了。。
[/Quote]


这是正解么???
qjtttt 2010-04-21
  • 打赏
  • 举报
回复
public String next() {
if(index != words.size)
return words[index++];
else
throw new Exception("已经是最后一个元素");
}
qjtttt 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 allvictory 的回复:]
public String next() {
return words[index++];
}[/Quote]

IndexOutOfBoundsException
huazhiyu1981 2010-04-21
  • 打赏
  • 举报
回复
也来学学,期望找到高手来指教!!
beiouwolf 2010-04-21
  • 打赏
  • 举报
回复
迭代是一种算法,迭代法的解释:
  迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。
  迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

你可以把它考虑成一个指针,这个指针从集合的第一项开始,每次可以向后移动一位直到集合的最后一项
jackmtlee 2010-04-21
  • 打赏
  • 举报
回复
实现了Iterator接口的类就可以具有迭代器性质(模式)。
crimy10 2010-04-21
  • 打赏
  • 举报
回复
好像用Iterable也可以实现迭代吧??
sm521 2010-04-21
  • 打赏
  • 举报
回复
接口呗、、就是游标模式的遍历呗、
自己看看帮助文档
欢乐极客 2010-04-20
  • 打赏
  • 举报
回复
迭代器的实现是一种设计模式,在java中只要会用Iterator这个接口就可以了。。
soooooga 2010-04-20
  • 打赏
  • 举报
回复


自定义的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;

}



}

}

allvictory 2010-04-20
  • 打赏
  • 举报
回复
public Iterator<String> iterator(){
return new Iterator<String>() {
private int index=0;
public boolean hasNext() {
return index<words.length;//words代表数组或者集合
}
public String next() {
return words[index++];
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
CreazyJava 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sunle818 的回复:]

引用 6 楼 creazyjava 的回复:
Iterator是一个接口,用于对类集进行输出,一般我们不直接通过new的办法来实例化Iterator,通过类集提供的iterator()来实现Iterator的实例化~~


噢~ 对 这是接口 对~ 接口可以这么搞的.... 哎 学了C# 又学JAVA 有些东西搞的好混乱啊....
[/Quote]

是啊 学多了总会有点混的 慢慢来 别着急
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 creazyjava 的回复:]
Iterator是一个接口,用于对类集进行输出,一般我们不直接通过new的办法来实例化Iterator,通过类集提供的iterator()来实现Iterator的实例化~~
[/Quote]

噢~ 对 这是接口 对~ 接口可以这么搞的.... 哎 学了C# 又学JAVA 有些东西搞的好混乱啊....
CreazyJava 2010-04-20
  • 打赏
  • 举报
回复
Iterator是一个接口,用于对类集进行输出,一般我们不直接通过new的办法来实例化Iterator,通过类集提供的iterator()来实现Iterator的实例化~~
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zangxt 的回复:]
是个对象。
[/Quote]
老鸟 能稍微仔细点么?
ZangXT 2010-04-20
  • 打赏
  • 举报
回复
是个对象。
hq1305018 2010-04-20
  • 打赏
  • 举报
回复
如果你要实现一个Iterator,那么你必须想办法来实现那三个方法.
你可以参考java.util.Collection的代码.
加载更多回复(2)

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧