Skip to content

Instantly share code, notes, and snippets.

@yokolet
Created June 15, 2017 06:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yokolet/21551034731033910bc6ebe216bfee14 to your computer and use it in GitHub Desktop.
Save yokolet/21551034731033910bc6ebe216bfee14 to your computer and use it in GitHub Desktop.
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Vector2DIterator implements Iterator<Integer> {
Iterator<List<Integer>> parent = null;
Iterator<Integer> child = null;
void updateChild() {
while (!child.hasNext() && parent.hasNext()) {
child = parent.next().iterator();
}
}
public Vector2DIterator(List<List<Integer>> vec2d) {
if (vec2d == null || vec2d.size() == 0 ) { return; }
parent = vec2d.iterator();
if (parent.hasNext()) {
child = parent.next().iterator();
updateChild();
}
}
@Override
public boolean hasNext() {
return child != null && child.hasNext();
}
@Override
public Integer next() {
Integer temp = child.next();
updateChild();
return temp;
}
static void iterate(Vector2DIterator v2DIter) {
while (v2DIter.hasNext()) {
System.out.print(v2DIter.next() + ", ");
}
System.out.println();
}
public static void main(String[] args) {
List<Integer> inner0 = Arrays.asList(1, 2);
List<Integer> inner1 = Arrays.asList(3);
List<Integer> inner2 = Arrays.asList(4, 5, 6);
List<List<Integer>> input = Arrays.asList(inner0, inner1, inner2);
Vector2DIterator v2DIter = new Vector2DIterator(input);
iterate(v2DIter);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment