Iterator的数据结构是什么呢?

netxuning 2005-12-08 10:31:09
如题
是树还是链之类的呢?
由于不了解数据结构,有段代码不太明白呀!如下:
private void printElement(Element element)
{
System.out.println(element.getQualifiedName()+": "+element.getText());
Iterator iter = element.elementIterator();
while (iter.hasNext()) //为什么不是if?
{
Element sub = (Element)iter.next();
System.out.println("属性个数是:"+sub.attributeCount());
printElement(sub);
}
}

这段代码用来解析一个xml,我个人认为while那行把while换成if能出现同样的结果,但不是这样,所以我认为是我对Iterator的结构不了解所造成的!
请大家指点迷津!谢谢了
...全文
251 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
netxuning 2005-12-13
  • 打赏
  • 举报
回复
谢谢
zhkchi 2005-12-13
  • 打赏
  • 举报
回复
public static ArrayList getArrayList(Iterator iter) {
ArrayList records = new ArrayList();
for(; iter.hasNext(); records.add(iter.next()));
return records;
}

上面的方法可以把Iterator变为ArrayList
netxuning 2005-12-12
  • 打赏
  • 举报
回复
谢谢诸位的回答,非常感谢
但是我生性驽钝,还是没有理解大家的意思。
chalsy(白梓健) 先生说的很对,我理解的很肤浅
其实我对这个递归函数是如何运行的还不了解
把这个递归改为嵌套的循环的话,也许我会稍微理解点儿。
这个递归如何改为循环呢?再次谢谢了!
chalsy 2005-12-09
  • 打赏
  • 举报
回复
while (iter.hasNext()) //为什么不是if?

对于这句,我觉得你不明白的不是Iterator,而是while和if的区别,
while是指要条件语句为真就一直会循环执做很多遍。
而if是不会循环的,永远只可能走一遍。
所以,如果Iterator里面不止1条数据,这两个就不能互换使用。

简单理解可以认为Iterator内部有一个游标,用来指示当前位置。

iter.hasNext()是判断这个Iterator里面还有没有下一条数据,即当前游标后有无数据。
调用iter.next()会让Iterator内部的一个游标往下走一行。
freshman520 2005-12-09
  • 打赏
  • 举报
回复
也叫反复器

你知道它能反复取出元素就行了
luanxj 2005-12-09
  • 打赏
  • 举报
回复
楼上的说得很好,if只执行一次,while是循环
gemouzhi 2005-12-08
  • 打赏
  • 举报
回复
DP
jgsfy 2005-12-08
  • 打赏
  • 举报
回复
Iterator是一个迭代器,他的结构像一个队列,把取到的东西先放到队列里面,然后用while循环判断队列里面是不是还有,如果还有元素那就取出,所以这里不能用if
believefym 2005-12-08
  • 打赏
  • 举报
回复
看Element的源码
j2se api里的Iterator就是迭代器,内部结构没研究过

62,629

社区成员

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

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