Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组树迭代器_Java_Tree_Iterator - Fatal编程技术网

Java数组树迭代器

Java数组树迭代器,java,tree,iterator,Java,Tree,Iterator,我正在尝试编写一个使用数组实现树的类,我需要一些帮助来编写一个迭代器方法,该方法返回树中存储的元素的迭代器 解决方案: public Iterator<E> iterator() { return new Iterator<E>() { private int index = 0; public boolean hasNext() { return index < ArrayTree.this.siz

我正在尝试编写一个使用数组实现树的类,我需要一些帮助来编写一个迭代器方法,该方法返回树中存储的元素的迭代器

解决方案:

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;
公共布尔hasNext(){
返回索引
如果不仔细检查您的实现,一个非常简单的实现可能是

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;
公共布尔hasNext(){
返回索引
有两种方法,但是如果您的ArrayTree类实现了Iterable和Iterator接口,您就可以开始了。

您需要迭代什么?给定某个节点,您希望迭代其直接子代还是所有子代?前者很简单,后者有点复杂。迭代顺序应该是什么?还有,人们是如何向你的ArrayTree类添加节点的呢?关于你的问题:如果你发现答案很有用(在你发布(并收到了对8个后续问题的答案)时,你应该对答案进行投票,而不是删除整个问题和答案。这不是答案,是吗?他仍然需要在
iterator()方法中实现迭代逻辑。简单地将类标记为
实现Iterable
是没有帮助的,这是一个答案。这是家庭作业。他需要试一试。当他按照我的建议去做的时候,他会看到一些关于必须实现的方法的东西,也许灯会亮起来。否则,他可以问一个更具体的问题。