接受一個java類,我們必須設計我們自己的HashSet類。 (不使用JAVA API)Java:爲用戶創建的HashSet類實現迭代器。 next()和hasNext()的語義?
我必須爲此實現和迭代器,並且我對使用它的語義感到困惑。
不確定是否應該允許調用Next()來調用迭代器的索引,或者如果用戶必須將next()與絕對路徑一起使用next()循環,指數。
例如,如果用戶連續幾次調用next()而沒有hasNext(),會發生什麼?
感謝大家的幫忙!
public class HashWordSet implements WordSet {
private int size;
private Node[] buckets = new Node[8];
//above is only provided for mention of variables
private class Node {
Word value;
Node next = null;
public Node(Word word) {value = word;}
public String toString() {return value.toString();}
}
class WordIterator implements Iterator<Word> {
private Node next;
private int index = 0;
public Word next() {
Node element = next;
if (element == null)
throw new NoSuchElementException();
if ((next = element.next) == null) {
Node[] temp = buckets;
while (index < temp.length && (next = temp[index++]) == null)
;
}
return element.value;
}
public boolean hasNext() {
return (next != null);
}
嗨路易斯,感謝您的澄清。你認爲你可以用一小段代碼指向正確的方向嗎?謝謝 – Wangagat 2012-03-23 21:22:53
當然:Java'HashMap'源碼。 http://www.docjar.com/html/api/java/util/HashMap.java.html#791 – 2012-03-23 21:33:20
好的,我根據您發送的鏈接對其進行了修改,但仍然無效(更新超過)@ Andrzej Doyle – Wangagat 2012-03-25 00:44:34