Skip to content

Commit b64b386

Browse files
authored
Refactored Peeking Iterator.java
1 parent 991786f commit b64b386

File tree

1 file changed

+30
-42
lines changed

1 file changed

+30
-42
lines changed

Medium/Peeking Iterator.java

Lines changed: 30 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,35 @@
11
// Java Iterator interface reference:
22
// https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
3-
import java.util.NoSuchElementException;
43

54
class PeekingIterator implements Iterator<Integer> {
6-
7-
private Integer next;
8-
private Iterator<Integer> iter;
9-
private boolean noNextElement = false;
10-
11-
public PeekingIterator(Iterator<Integer> iterator) {
12-
// initialize any member here.
13-
iter = iterator;
14-
moveIterator();
15-
}
16-
17-
// Returns the next element in the iteration without advancing the iterator.
18-
public Integer peek() {
19-
return next;
20-
}
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-
if (noNextElement) {
27-
throw new NoSuchElementException();
28-
}
29-
Integer val = next;
30-
moveIterator();
31-
return val;
32-
}
33-
34-
@Override
35-
public boolean hasNext() {
36-
return !noNextElement;
37-
}
38-
39-
public void moveIterator() {
40-
if (iter.hasNext()) {
41-
next = iter.next();
42-
}
43-
else {
44-
noNextElement = true;
45-
}
46-
}
5+
Integer nextElement;
6+
Iterator<Integer> iterator;
7+
public PeekingIterator(Iterator<Integer> iterator) {
8+
// initialize any member here.
9+
this.iterator = iterator;
10+
updateNext();
11+
}
12+
13+
private void updateNext() {
14+
nextElement = iterator.hasNext() ? iterator.next() : null;
15+
}
16+
17+
// Returns the next element in the iteration without advancing the iterator.
18+
public Integer peek() {
19+
return nextElement;
20+
}
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+
}
4735
}

0 commit comments

Comments
 (0)