251 implement 2D array list iterator with remove()
class Vector2D implements Iterator<Integer> {
private int row = 0;
private int col = 0;
private List<List<Integer>> vec;
public Vector2D(List<List<Integer>> vec2d) {
vec = vec2d;
}
@Override
public Integer next() {
return vec.get(row).get(col++);
}
@Override
public boolean hasNext() {
//if row<vec.size() && col<list.get(row).size() no need to enter while loop,it's true
//otherwise, go to the next row
//see if there's any row left
while(row<vec.size() && col==vec.get(row).size()) {
col = 0;
row++;
}
return !(row==vec.size());
}
@Override
public void remove() {
//remove value that is nexted last round
vec.get(row).remove(col-1);
col--;
}
}