用Java映射数据结构

时间:2012-04-29 08:52:50

标签: java string data-structures mapping hashmap

我必须设计一个将输入关键字并输出类别ID的函数。 例如:

f('dog') returns _ANIMAL
f('chair') returns _FURNITURE

我已经有了映射,每次都可以遍历标记数组,但我觉得这不是最好的解决方案。

在这个特定任务的Java库中是否有一个特殊的数据结构(我正在考虑三元搜索树)?我应该只使用HashMap(或者可能是Set(因为几个类别))?

P.S。这个映射是固定的,我不需要在构建它时添加或删除元素。

2 个答案:

答案 0 :(得分:3)

如果我理解正确,那么HashMap听起来就像你想要的那样。你不希望每次迭代整个数组,因为有很多函数调用和/或大数组你的程序会慢慢运行。使用HashMap,从一个键(您的关键字)中拉出一个值(您的类别)或多或少立即发生。

您可以像这样构建地图:

HashMap map = new HashMap();
map.put("dog", "animal");
map.put("chair", "furniture");
map.put("cat", "animal");

然后map.get("dog")返回“animal”,map.get("chair")返回“家具”。

正如其他人所指出的那样,enums也能很好地工作(并且速度要快一点) - 但需要注意的是它们在编译时被修复,因此在执行期间无法更改。

答案 1 :(得分:0)

您可以更改enum,如下所示:

public enum Things{
    _ANIMAL("Dog"), _FURNITURE("Animal"); 
    private String description;
    Things(String description){
        this.description= description;
    }
    public String toString(){
        return description;
    }
};

每当您想要检索枚举的字符串表示时,只需调用toString

即可

示例:

Things._ANIMAL.toString()将输出"Dog"