Итератор дерева массивов Java - PullRequest
0 голосов
/ 11 октября 2010

Я пытаюсь написать класс, который реализует дерево, используя массив, и мне нужна помощь, чтобы написать метод Iterator, который возвращает итератор элементов, хранящихся в дереве.

Решение:

public Iterator<E> iterator() {
    return new Iterator<E>() {
        private int index = 0;

        public boolean hasNext() {
            return index < ArrayTree.this.size();
        }

        public E next() {
           if (!hasNext()) {
               return new NoSuchElementException();
           }
           return ArrayTree.this.tree[index++];
        }

        public void remove() {
            return new OperationNotSupported();
        }
    }
}

Ответы [ 2 ]

1 голос
/ 11 октября 2010

Без тщательного изучения вашей реализации очень простая реализация может быть

public Iterator<E> iterator() {
    return new Iterator<E>() {
        private int index = 0;

        public boolean hasNext() {
            return index < ArrayTree.this.size();
        }

        public E next() {
           if (!hasNext()) {
               return new NoSuchElementException();
           }
           return ArrayTree.this.tree[index++];
        }

        public void remove() {
            return new OperationNotSupported();
        }
    }
}
0 голосов
/ 11 октября 2010

Есть несколько способов, но если ваш класс ArrayTree реализует интерфейсы Iterable и Iterator, вы будете на своем пути.

...