Skip to content

Commit ca2f908

Browse files
authored
Update Peeking Iterator.java
1 parent f937b5a commit ca2f908

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

Medium/Peeking Iterator.java

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,35 @@
22
// https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
33

44
class PeekingIterator implements Iterator<Integer> {
5-
Integer nextElement;
6-
Iterator<Integer> iterator;
5+
private Iterator<Integer> iterator;
6+
private Integer topElement;
7+
78
public PeekingIterator(Iterator<Integer> iterator) {
89
// initialize any member here.
910
this.iterator = iterator;
10-
updateNext();
11-
}
12-
13-
private void updateNext() {
14-
nextElement = iterator.hasNext() ? iterator.next() : null;
11+
populateTopElement();
1512
}
16-
13+
1714
// Returns the next element in the iteration without advancing the iterator.
1815
public Integer peek() {
19-
return nextElement;
16+
return this.topElement;
17+
}
18+
19+
// hasNext() and next() should behave the same as in the Iterator interface.
20+
// Override them if needed.
21+
@Override
22+
public Integer next() {
23+
Integer nextValue = this.topElement;
24+
populateTopElement();
25+
return nextValue;
26+
}
27+
28+
@Override
29+
public boolean hasNext() {
30+
return this.topElement != null;
31+
}
32+
33+
private void populateTopElement() {
34+
this.topElement = this.iterator.hasNext() ? this.iterator.next() : null;
2035
}
21-
22-
// hasNext() and next() should behave the same as in the Iterator interface.
23-
// Override them if needed.
24-
@Override
25-
public Integer next() {
26-
Integer returnValue = nextElement;
27-
updateNext();
28-
return returnValue;
29-
}
30-
31-
@Override
32-
public boolean hasNext() {
33-
return nextElement != null;
34-
}
3536
}

0 commit comments

Comments
 (0)