Implement an iterator to flatten a 2d vector.
For example, Given 2d vector =
[ [1,2], [3], [4,5,6] ]
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,2,3,4,5,6].
利用List的iterator!!!不过要注意nullpublic class Vector2D implements Iterator<Integer> { private Iterator<List<Integer>> list; private Iterator<Integer> element; public Vector2D(List<List<Integer>> vec2d) { if(vec2d != null && vec2d.size() > 0){ list = vec2d.iterator(); } //element = list.iterator(); } @Override public Integer next() { hasNext(); return element.next(); } @Override public boolean hasNext() { if(list != null){ while((element == null)||(!element.hasNext() && list.hasNext())){ element = list.next().iterator(); } } return element != null && element.hasNext(); } } /** * Your Vector2D object will be instantiated and called as such: * Vector2D i = new Vector2D(vec2d); * while (i.hasNext()) v[f()] = i.next(); */