gpt4 book ai didi

java - 用 Java 实现我自己的树迭代器

转载 作者:行者123 更新时间:2023-12-02 07:02:35 26 4
gpt4 key购买 nike

我试图实现用于树遍历的迭代器接口(interface)。我收到以下错误。“for(Integer node : tr ) 处的类型不兼容”和“treeIterator.java 使用未经检查或不安全的操作”。我无法修复此错误。谁能指出问题所在。

//class to implement the Iterator interace.
class InorderItr implements Iterator {



public InorderItr(Node root) {
st = new Stack<Node>();
this.root = root;
}

@Override
public boolean hasNext() {
//has Next
}

@Override
public Integer next(){
//next node
}

@Override
public void remove(){
throw new java.lang.UnsupportedOperationException("Remove not supported.");
}
}

//This class just makes sure that we use the foreach loop.
class InorderTreeIterator implements Iterable {

Node root = null;

public InorderTreeIterator(Node root){
this.root = root;
}

@Override
public Iterator<Integer> iterator(){
try{
return new InorderItr(this.root);
} catch(UnsupportedOperationException e){
System.out.println(e.getMessage());
return null;
}
}
}


class treeIterator {

public static void main(String arg[]){
treeIterator obj = new treeIterator();
//create tree.
InorderTreeIterator tr = new InorderTreeIterator(obj.root);
for(Integer node : tr ){
System.out.println(node);
}
}
}

PS:这是我第一次尝试实现迭代器接口(interface)。如果我没有遵循任何标准做法,请指出。

谢谢

最佳答案

Iterablegeneric界面。这意味着,除非您为其提供类型参数,否则它将是原始类型,并且底层数据将被视为 Object

更改此:

class InorderItr implements Iterator
class InorderTreeIterator implements Iterable

以下内容:

class InorderItr implements Iterator<Integer>
class InorderTreeIterator implements Iterable<Integer>

这样,它就不再是原始类型(并且消除了编译器当前提供的未经检查和不安全操作的警告),并且它告诉编译器迭代器将具有它的底层数据类型是Integer(因为Iterator接口(interface)中的类型参数是它的底层数据类型),所以类型匹配。

关于java - 用 Java 实现我自己的树迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16463606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com