哈希表如何工作

时间:2014-06-06 22:28:33

标签: java hashtable

我有这样的事情:

private void convertLevel(String courseLevel)
{
    //This allows you to define your list with string keys instead of
    //using a bunch of ifs.
    Hashtable<String, Character> CourseLevels = new Hashtable<String, Character>();
    {
        CourseLevels.put("IB", '7');

        CourseLevels.put("Academic", '1');

        CourseLevels.put("Applied", '1');

        CourseLevels.put("ELL", '9');

        CourseLevels.put("Special Education", '8');
    };
    //Determine if the courseLevel exists in our list.
    if (CourseLevels.contains(courseLevel))
    {
        //Assuming level is defined as a char and not a string
        //Yes it does, use it.
        level = CourseLevels.get(courseLevel); // gives me an error saying incompatible types
    }
    else
    {
        //if not use the default.    
        level = DEFAULT_LEVEL;
    }
}

任何人都可以告诉我为什么会这样吗

level是一个字符串,在类的其他部分中定义

2 个答案:

答案 0 :(得分:2)

hashtable&#39; s contains(Object value)测试值,而不是键!基本上,它与containsValue()相同。您可能想要使用containsKey()方法。

答案 1 :(得分:0)

好吧,我会尝试解释我所知道的。 Hashtable是一个具有类似结构的表     key =&gt;值

其中key就像&#34; name&#34;表的每个元素和值都是它的值 我们以一些代码为例

Hashtable<String, String> table = new Hashtable<String, String>();
table.put("key here", "value here");
table.put("hash", "table");

此表格如下所示

"key here" => "value here"
"hash" => "table"

现在我们可以通过调用get方法

来获取存储在表中的值
String value = table.get("key here"); //will return "value here"
String value2 = table.get("hash"); //will return "table"

Hashtables就像php关联数组。 除了在Hashtable中搜索值非常快,因为它的搜索是通过哈希算法进行的,而不是通过比较表中的每个项目