簡體   English   中英

對於每次迭代,增強的for循環在鏈表上執行了哪些精確操作?

[英]What exact operations does an enhanced for-loop perform on a linked-list for each iteration?

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();
  }
}

它應該做的事情

Iterator<Message> iter = messages.iterator();
while (iter.hasNext()){
    msg=iter.next().toString();
    System.out.println(msg);
}

增強的for循環沒有什么特別之處。 一個

for (T i : aCollection) {
  doSomething;
}

簡單地翻譯成

for (Iterator<T> itr = aCollection.iterator(); itr.hasNext(); ) {
  T i = itr.next();
  doSomething;
}

如何通過集合進行迭代是迭代器的工作,它與增強的for循環無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM