【发布时间】:2010-07-02 16:36:43
【问题描述】:
是否可以使用 ListIterator 遍历 Java 中的 LL,定期将对象添加到列表中,并按照添加顺序处理列表中的这些项目?
假设我从一个包含单个对象的 LL 开始。我处理这个对象,并决定我想添加两个额外的对象,我想进一步处理(如 FIFO)。直觉上,我从
开始这个过程while (itr.hasNext()) {
itr.next();
...
itr.add();
}
但是,这似乎很快就崩溃了 - add 实际上是在我当前所在的索引之前添加项目,而不是在 (ListIterator javadoc) 之后。这意味着当我再次点击 while 循环开始时,它实际上并没有识别出添加到 LL 中的内容,因为它实际上需要向后退(.hasPrevious() 而不是.hasNext())才能找到它。但我不能以.hasPrevious() 开始LL(我不认为),因为LL 中的第一项是.next() 项目。
如何干净利落地做到这一点?还是我傻了?
【问题讨论】:
-
你要实现队列吗?
-
@bears:我不这么认为,因为根据我在 javadoc 中的理解,队列让我可以从前面删除东西,但我实际上需要保留列表中的项目以供以后处理.我可能可以使用两个数据结构来解决这个问题,但我想知道为什么我不能使用这个......
-
因此,听起来您对特定项目进行了两轮处理;项目按先进先出顺序处理 - 对吗?如果是这样,请使用两个队列。
-
@bears:是的,我可以使用两个队列。我想知道为什么这个特定的课程说它让我做某事时失败了。
-
该课程没有失败,它正在按照它所说的那样做。
标签: java iterator linked-list