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
Post a Comment