, принимая класс java, и мы должны создать собственный класс HashSet. (не используя JAVA apis)Java: реализация итератора для созданного пользователем класса HashSet. Семантика next() и hasNext()?
Мне нужно реализовать итератор для этого, и я смущен семантикой его использования.
Не уверен, что должен быть разрешен вызов в Next(), который будет перемещать индекс итератора, или если пользователь должен абсолютно использовать next() в сочетании с контуром hasNext(), который перемещает индекс.
Например, что произойдет, если у пользователя было несколько последовательных вызовов для следующего() без 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
Конечно: источник Java 'HashMap'. http://www.docjar.com/html/api/java/util/HashMap.java.html#791 –
ОК, я изменил его на основе ссылки, которую вы отправили, но она по-прежнему не работает (обновлено выше) @ Andrzej Doyle – Wangagat