for (String msg : messages) {
System.out.println(msg);
}
假设消息是一个正确初始化的循环,双向链表,没有头或指针(引用)。也就是说,它只有一个当前节点指针。我的问题只是每次迭代的增强for循环是什么。如果有必要,我有一个接口,我可以发布消息的这种特殊类型的ADT。
这是迭代器:
import java.util.*;
public class LinkedCircularSequenceIterator<E> implements Iterator<E> {
private DblListnode<E> curr;
private int itemsLeft;
public LinkedCircularSequenceIterator(DblListnode<E> curr, int numItems) {
this.curr = curr;
this.itemsLeft = numItems;
}
public boolean hasNext() {
return itemsLeft > 1;
}
public E next() {
if(!hasNext()) {
throw new NoSuchElementException();
}
curr = curr.getNext();
itemsLeft--;
return curr.getPrev().getData();
}
public void remove() {
throw new UnsupportedOperationException();
}
}
答案 0 :(得分:3)
应该做类似
的事情Iterator<Message> iter = messages.iterator();
while (iter.hasNext()){
msg=iter.next().toString();
System.out.println(msg);
}
答案 1 :(得分:3)
增强的for循环没有什么特别之处。
for (T i : aCollection) {
doSomething;
}
简单地翻译为
for (Iterator<T> itr = aCollection.iterator(); itr.hasNext(); ) {
T i = itr.next();
doSomething;
}
如何通过集合进行迭代是迭代器的工作,它与增强的for循环无关。