Java implment二进制搜索树,带迭代器仅用于Key

时间:2016-01-18 03:14:34

标签: java

我遇到了Java编程的问题。我想将一个类(二叉搜索树)实现为

public class ABC<Key, Value> implements Iterator<Key>
{
}

在这个课程中,我定义了一个名为ABCNode的节点,其结构如下:

public class ABCNode
{
    public Key key;
    public Value value;
    public ABCNode left;
    public ABCNode right;
}

然后我编写了以下代码

public Iterable<Key> iterator()
{
    return new ABCKeyIterator();
}

private class ABCKeyIterator implements Iterator<Key>
{
    public boolean hasNext() {}
    public void remove() {}
    public Key next() {}   
}

该类包括键值对。现在我想实现一个迭代器函数来获取所有键。我在迭代器函数

时遇到错误
iterator() in ABC cannot implement iterator() in Iterable return type Iterable<Key> is not compatible with Iterator<Key> where Key,T are type-variables: Key extends Comparable<Key> declared in class ABC T extends Object declared in interface Iterable

任何人都可以帮忙看看如何从头开始实现它吗?我认为Java已经有了这样的东西。但我想自己实现它来学习它。谢谢。

1 个答案:

答案 0 :(得分:1)

该错误消息抱怨此行:

public Iterable<Key> iterator()

您已将iterator()声明为Iterable<Key>而不是Iterator<Key>。这两个界面虽然相关,却完全不同。