编写我自己的“TreeMap”类 - 扩展和/或实现的内容?

时间:2016-03-11 13:14:22

标签: java binary-search-tree treemap

对于作业,我被要求“创建一个名为TreeMap的类,该类使用BinarySearchTree类来实现地图”。我们给出了一组接口和类来扩展和实现。

赋值的第一步要求“创建一个名为TreeEntry的内部类来存储条目。包括构造函数和任何强制方法”。

我们提供的界面包括BinaryTree<T>Entry<K, V>Map<K, V>等。

我们给出的课程是BinarySearchTree<T extends Comparable<T>> implements Iterable<T>等等。

我正在努力确定如何声明我的TreeMap。它应该延长BinarySearchTree,还是实施Map,还是两者兼而有之?

到目前为止,我提出的是public class TreeMap<K, V> implements Map<Comparable<K>, V>,然后将创建TreeMap嵌套类,但后来我没有看到我将“使用BinarySearchTree类来实施地图“?我是否在BinarySearchTree<TreeEntry<K, V>>课程中创建了新的TreeMap

修改

这是我到目前为止所写的:

public class TreeMap<K, V> implements Map<Comparable<K>, V> {

    private class TreeEntry<K, V> implements Entry<K, V>, Comparable<K> {

        private K key;
        private V value;

        public TreeEntry(K key, V value) {
            this.key = key;
            this.value = value;
        }

        @Override
        public int compareTo(K otherKey) {
            if (this.key.equals(otherKey)) {
                return 0;
            }
            else if (this.key > otherKey) {
                return 1;
            }
            else {
                return -1;
            }
        }

        @Override
        public K getKey() {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public V getValue() {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public V setValue(V value) {
            // TODO Auto-generated method stub
            return null;
        }

    }
}

我相信我没有正确实施Comparable<K>,因为我收到else if (this.key > otherKey)The operator > is undefined for the argument type(s) K, K

的错误

1 个答案:

答案 0 :(得分:0)

使用BinarySearchTree作为实现目前是一项任务。这可能是你目前的想法或某人如何做的建议。如果你继承它并在以后,当成千上万的客户使用你的TreeMap并且你认为BinarySearchTree不是完美的实现时,那么你将无法再改变它。

这是因为有人可能将其用作

BinarySearcTree<X,Y> map = new TreeMap<>();

现在怎样?您仍然坚持使用BinarySearchTree的继承。但如果你只是&#34;只有&#34;实现Map,然后您可以随时更改类的实现,而不会给客户端带来问题。