File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ /*
2+
3+ 1. 아이디어 : Iterator 구현체 메소드를 활용하여, peek()메소드 구현
4+ 공식 ref를 참고, peekVal 변수를 추가하고 미리 생성자 호출에서 next()를 진행해 다음값을 저장
5+ 이때 포인터까지 이동했으므로, next(), hasNext()모두 한 칸 앞선 포인터 기준으로 오버라이딩
6+
7+ 2. 시간복잡도 : O(N)
8+
9+ 3. 자료구조/알고리즘 : 구현
10+
11+ */
12+
13+ // Java Iterator interface reference:
14+ // https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
15+
16+ class PeekingIterator implements Iterator <Integer > {
17+ private Iterator <Integer > iter ;
18+ private int peekVal ;
19+
20+ public PeekingIterator (Iterator <Integer > iterator ) {
21+ this .iter = iterator ;
22+ peekVal = iter .next ();
23+ }
24+
25+ public Integer peek () {
26+ return peekVal ;
27+ }
28+
29+ @ Override
30+ public Integer next () {
31+ int val = peekVal ;
32+ if (iter .hasNext ()) peekVal = iter .next ();
33+ else peekVal = -1 ;
34+
35+ return val ;
36+ }
37+
38+ @ Override
39+ public boolean hasNext () {
40+ if (peekVal == -1 ) return false ;
41+ return true ;
42+ }
43+ }
You can’t perform that action at this time.
0 commit comments