☆☆☆
public class NestedIterator implements Iterator<Integer> { /** * // 如果其中存的是一个整数,则返回 true,否则返回 false * public boolean isInteger(); * // 如果其中存的是一个整数,则返回这个整数,否则返回 null * public Integer getInteger(); * // 如果其中存的是一个列表,则返回这个列表,否则返回 null * public List<NestedInteger> getList(); */ Stack<NestedInteger> stack = new Stack<>(); public NestedIterator(List<NestedInteger> nestedList) { for (int i = nestedList.size() - 1; i >= 0; i--) { stack.push(nestedList.get(i)); } } @Override public Integer next() { return stack.pop().getInteger(); } @Override public boolean hasNext() { if (stack.isEmpty()) return false; if (!stack.peek().isInteger()) { List<NestedInteger> temp = stack.pop().getList(); for (int i = temp.size() - 1; i >= 0; i--) { stack.push(temp.get(i)); } return hasNext(); // 注意此返回语句 }else { return true; } } }