Flatten 2D Vector
Written on November 2, 2015
Tweet
Implement an iterator to flatten a 2d vector.
public class Vector2D {
Iterator<Integer> iterator;
Queue<iterator> q = new LinkedList<iterator>();//用queue比用ArrayList方便
public Vector2D(List<List<Integer>> vec2d) {
for (List<Integer> vec : vec2d) {
q.offer(vec.iterator());
}
if (!q.isEmpty()) {
iterator = q.poll();
}
}
public int next() {
if (hasNext()) {
return iterator.next();
} else {
return -1;
}
}
public boolean hasNext() {
if (iterator == null) return false;
while (!iterator.hasNext() && !q.isEmpty()) {
iterator = q.poll();
}
return iterator.hasNext();
}
}