package org.icij.task; import java.util.Iterator; import java.util.Map; public class OptionsIterator<T> implements Iterator<Option<T>> { private int cursor = 0; private final int length; private final Map<String, Option<T>> options; private final String[] keys; OptionsIterator(final Map<String, Option<T>> options) { length = options.size(); keys = options.keySet().toArray(new String[length]); this.options = options; } @Override public boolean hasNext() { return cursor < length; } @Override public Option<T> next() { return options.get(keys[cursor++]); } @Override public void remove() { options.remove(keys[cursor]); } }