# HG changeset patch # User one # Date 1282915548 -32400 # Node ID 7ede12c9a2e93ece93a4990fd81046f28a1d9bde # Parent ebf0e1a8c727f31a299d9a4d541c3c792404061c fix iterator diff -r ebf0e1a8c727 -r 7ede12c9a2e9 src/treecms/proto/test/PreOrderTreeWalker.java --- a/src/treecms/proto/test/PreOrderTreeWalker.java Fri Aug 27 18:26:09 2010 +0900 +++ b/src/treecms/proto/test/PreOrderTreeWalker.java Fri Aug 27 22:25:48 2010 +0900 @@ -17,6 +17,7 @@ class IteratorState implements Iterator { LinkedList>stack = new LinkedList>(); LinkedListchildren; + NodeAPI next; IteratorState(NodeAPI root) { children = new LinkedList(root.getChildList()); @@ -29,13 +30,15 @@ children = stack.getLast(); stack.removeLast(); } + next = children.get(0); + children.remove(0); + if (! next.getChildList().isEmpty()) { + stack.addLast(children); + children = new LinkedList(next.getChildList()); + } return true; } public NodeAPI next() { - NodeAPI next = children.get(0); - children.remove(0); - stack.addLast(children); - children = new LinkedList(next.getChildList()); return next; } public void remove() {