public class Vector2D {
int indexList, indexEle;
List<List<Integer>> vec;
public Vector2D(List<List<Integer>> vec2d) {
indexList = 0;
indexEle = 0;
vec = vec2d;
}
public int next() {
return vec.get(indexList).get(indexEle++);
}
public boolean hasNext() {
while(indexList < vec.size()){
if(indexEle < vec.get(indexList).size())
return true;
else{
indexList++;
indexEle = 0;
}
}
return false;
}
}
public class Vector2D implements Iterator<Integer> {
private Iterator<List<Integer>> row;
private Iterator<Integer> col;
public Vector2D(List<List<Integer>> vec2d) {
row = vec2d.iterator();
//col = row.hasNext() ? row.next() : null;
}
@Override
public Integer next() {
hasNext();
return col.next();
}
@Override
public boolean hasNext() {
// return row.hasNext() || col.hasNext();
while ((col == null || !col.hasNext()) && row.hasNext()) {
col = row.next().iterator();
}
return col != null && col.hasNext();
}
}
/**
* Your Vector2D object will be instantiated and called as such:
* Vector2D i = new Vector2D(vec2d);
* while (i.hasNext()) v[f()] = i.next();
*/