对于作业,我被要求“创建一个名为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
答案 0 :(得分:0)
使用BinarySearchTree作为实现目前是一项任务。这可能是你目前的想法或某人如何做的建议。如果你继承它并在以后,当成千上万的客户使用你的TreeMap并且你认为BinarySearchTree不是完美的实现时,那么你将无法再改变它。
这是因为有人可能将其用作
BinarySearcTree<X,Y> map = new TreeMap<>();
现在怎样?您仍然坚持使用BinarySearchTree的继承。但如果你只是&#34;只有&#34;实现Map,然后您可以随时更改类的实现,而不会给客户端带来问题。