|
17 | 17 | */
|
18 | 18 | public class NestedIterator implements Iterator<Integer> {
|
19 | 19 |
|
20 |
| - private Stack<NestedInteger> stack; |
21 |
| - |
22 |
| - public NestedIterator(List<NestedInteger> nestedList) { |
23 |
| - this.stack = new Stack<>(); |
24 |
| - for (int i = nestedList.size() - 1; i >= 0; i--) { |
25 |
| - this.stack.push(nestedList.get(i)); |
| 20 | + private Stack<NestedInteger> stack; |
| 21 | + |
| 22 | + public NestedIterator(List<NestedInteger> nestedList) { |
| 23 | + this.stack = new Stack<>(); |
| 24 | + for (int i = nestedList.size() - 1; i >= 0; i--) { |
| 25 | + this.stack.push(nestedList.get(i)); |
| 26 | + } |
26 | 27 | }
|
27 |
| - } |
28 | 28 |
|
29 |
| - @Override |
30 |
| - public Integer next() { |
31 |
| - int value = this.stack.pop().getInteger(); |
32 |
| - return value; |
33 |
| - } |
| 29 | + @Override |
| 30 | + public Integer next() { |
| 31 | + return stack.pop().getInteger(); |
| 32 | + } |
34 | 33 |
|
35 |
| - @Override |
36 |
| - public boolean hasNext() { |
37 |
| - while (!this.stack.isEmpty() && !this.stack.peek().isInteger()) { |
38 |
| - List<NestedInteger> ni = this.stack.pop().getList(); |
39 |
| - for (int i = ni.size() - 1; i >= 0; i--) { |
40 |
| - this.stack.push(ni.get(i)); |
41 |
| - } |
| 34 | + @Override |
| 35 | + public boolean hasNext() { |
| 36 | + while (!stack.isEmpty() && !stack.peek().isInteger()) { |
| 37 | + NestedInteger popped = stack.pop(); |
| 38 | + if (popped == null) { |
| 39 | + continue; |
| 40 | + } |
| 41 | + List<NestedInteger> list = popped.getList(); |
| 42 | + for (int i = list.size() - 1; i >= 0; i--) { |
| 43 | + stack.push(list.get(i)); |
| 44 | + } |
| 45 | + } |
| 46 | + return !stack.isEmpty(); |
42 | 47 | }
|
43 |
| - return !this.stack.isEmpty(); |
44 |
| - } |
45 | 48 | }
|
46 | 49 |
|
47 | 50 | /**
|
|
0 commit comments