java - Infinite loop because the iterator doesn't move -


there class implementing interface selector. should use iterator() in methods.

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 value in order save first sequence member before first next() using.

with following code program goes infinite loop in printed first member of sequence.

while(!selector.end()) {       system.out.print(selector.current() + " ");       selector.next(); } 

why happens? though use next() method, iterator doesn't move.

every time call items.iterator() create new iterator.

create 1 iterator @ start, , use repeatedly.

private class sequenceselector implements selector {     private final iterator<t> iterator = items.iterator();      private t obj = iterator.next();     public boolean end() { return !iterator.hasnext(); }     public t current() { return obj; }     public void next() { obj = iterator.next(); } } 

Comments