Java I';我被要求实现一个基于树的映射,但我不知道我';我在做什么
任务如下: (50分)编写一个名为TreeMap的类,这是一个具有两个类型变量K和V的泛型类(K是一个键,V是一个可通过其键检索的值)。该类应具有以下方法: public V get(K键)强> 此方法应检索存储在映射中指定键下的值,如果映射中不存在该键,则应检索null 公共V put(K键,V值)强> 此方法应在键下存储指定的值。如果该键已存在于映射中,则应返回上一个值(并被新值覆盖)。如果该键不存在,则该方法应返回null 公共设置键集()强> 此方法应返回一个Java集,其中包含映射中的所有键,并按键的自然顺序(例如,字符串的字母顺序) get和put方法应该在最坏情况下的Θ(logn)时间内运行,而keySet应该在Θ(n)时间内运行。您应该使用讲座中的红黑树代码作为代码的起点Java I';我被要求实现一个基于树的映射,但我不知道我';我在做什么,java,dictionary,tree,Java,Dictionary,Tree,任务如下: (50分)编写一个名为TreeMap的类,这是一个具有两个类型变量K和V的泛型类(K是一个键,V是一个可通过其键检索的值)。该类应具有以下方法: public V get(K键) 此方法应检索存储在映射中指定键下的值,如果映射中不存在该键,则应检索null 公共V put(K键,V值) 此方法应在键下存储指定的值。如果该键已存在于映射中,则应返回上一个值(并被新值覆盖)。如果该键不存在,则该方法应返回null 公共设置键集() 此方法应返回一个Java集,其中包含映射中的所有键,并按
我不是在这里发帖期待有人给我答案,我只是需要帮助。我在网上到处搜索,与这个问题相关的一切要么超出了我的理解范围,要么根本不存在 get()、put()和keySet()怎么可能是唯一需要的方法?如果没有rotateRight()、rotateLeft()等方法,红黑树怎么可能工作。?我是否应该通过将put()方法变大来完成这些方法所能做的一切 你会笑,但这是我到目前为止所拥有的一切,我不知道在哪里继续
import java.util.Set;
public class TreeMap301<K, V> {
K key;
V value;
private int size = 0;
public V get(K key){
return null;
}
public V put(K key, V val){
size += 1;
return null;
}
public Set<K> keySet(){
return null;
}
public int size(){
return size;
}
}
我甚至不知道该如何实施。我是否要为所有键和所有值创建一个列表?看来那会破坏目的。我只是想找些指导。我知道我在这门课上迷路了,所以请不要告诉我 我想你是在寻找提示,而不是让任何人帮你做作业(谢谢你让我们知道这是一项作业)。以下是一些让您开始的想法:
如果您想获得这些方面的任何具体帮助,请发布您尝试实现的代码,我相信会有人提供帮助。检查Java的
Treemap
源代码“类应具有以下方法…”并不意味着该类只能具有以下方法。您是对的,但这正是这位教授用这种方式表达的意思,我已经研究他一年了。他的示例解决方案总是比实际的Java实现短10倍,这常常让我感到困惑。此外,我还研究了Java的源代码。它使用了我们还没有讨论过的东西,如果我使用了其中的大部分东西,课后我肯定会被要求留下来。我怀疑“应该有下面的方法”真的意味着“应该有下面的公共方法”。你肯定需要大量的私有方法来实现这一点。这个“讲座中的红黑树代码”怎么样?如果你明白这一点,那应该是90%以上的必修课了。所以我正试着开始,我对我的教授做事的方式感到非常失望。所以我正试图编写我的程序,扩展课堂上的红黑树代码。问题是,我的类、红黑类和测试客户机类都需要在一个命名包中才能扩展。但是,问题是RedBlack类从默认包导入类,当我将该类移动到命名包时,这些类将无法再导入,这必须完成。其次,我的代码给了我错误,比如final Queue q=new Queue;队列是一个接口。我认为您需要将导入问题放到一个单独的问题中。我不知道你所说的“从默认包导入类”是什么意思。通常,如果您有正确的导入语句,那么将类移动到新包中不会引起问题。