1
インターフェイスを実装するクラスがありますSelector
。そのメソッドにはiterator()
を使うべきです。イテレータが移動しないため無限ループ
private class SequenceSelector implements Selector {
private T obj = items.iterator().next();
public boolean end() { return !items.iterator().hasNext(); }
public T current() { return obj; }
public void next() { obj = items.iterator().next(); }
}
items
はArrayListです。 obj
は、最初の配列メンバーを最初のnext()
の前に保存するための値です。
次のコードでは、プログラムはシーケンスの最初のメンバーだけが出力される無限ループに入ります。
while(!selector.end()) {
System.out.print(selector.current() + " ");
selector.next();
}
どうしてですか? next()
メソッドを使用していますが、イテレータは移動しません。