【Leetcode】 284. 頂端迭代器
阿新 • • 發佈:2018-12-19
給定一個迭代器類的介面,介面包含兩個方法: next()
和 hasNext()
。設計並實現一個支援 peek()
操作的頂端迭代器 -- 其本質就是把原本應由 next()
方法返回的元素 peek()
出來。
示例:
假設迭代器被初始化為列表[1,2,3]。
呼叫next()返回1,得到列表的第一個元素。
現在呼叫peek()返回2,下一個元素。在此之後呼叫next()仍然返回2。
最後一次呼叫next()返回3,末尾元素。在此之後呼叫hasNext()應該返回false。
進階:你將如何拓展你的設計?使之變得通用化,從而適應所有的型別,而不只是整數型?
對於迭代器,我個人也不是特別理解。但是按照題目要求來做的話,用連結串列來做的話是很容易實現的,廢話不多說,直接上程式碼!
PS:進階我也不會啊。。
程式碼如下:
// Java Iterator interface reference: // https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html class PeekingIterator implements Iterator<Integer> { List<Integer> list; public PeekingIterator(Iterator<Integer> iterator) { // initialize any member here. list=new LinkedList<>(); while(iterator.hasNext()){ list.add(iterator.next()); } } // Returns the next element in the iteration without advancing the iterator. public Integer peek() { return list.get(0); } // hasNext() and next() should behave the same as in the Iterator interface. // Override them if needed. @Override public Integer next() { Integer temp=list.get(0); list.remove(0); return temp; } @Override public boolean hasNext() { if(list.size()==0){ return false; } else{ return true; } } }