File tree 1 file changed +47
-0
lines changed
1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Java Iterator interface reference:
2
+ // https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
3
+ import java .util .NoSuchElementException ;
4
+
5
+ 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
+ }
47
+ }
You can’t perform that action at this time.
0 commit comments