在Java中映射数据结构
我必须设计一个函数,它将输入一个关键字并输出一个类别ID。 例如:在Java中映射数据结构
f('dog') returns _ANIMAL
f('chair') returns _FURNITURE
我已经有了映射,我可以每次只需遍历标签数组,但我有一种感觉,这是不是最好的解决办法。
在Java库中是否有特殊的数据结构(我在考虑三元搜索树)用于此特定任务?我应该只使用HashMap(或可能设置(因为有几个类别))?
P.S.这个映射是固定的,我不需要在构建它时添加或删除元素。
如果我理解正确,那么HashMap听起来就像你想要的。你不希望每次迭代整个数组,因为有很多函数调用和/或一个大数组,你的程序会慢慢地运行。使用HashMap,从关键字(关键字)拉出一个值(您的类别)或多或少会立即发生,并且持续时间不变。
可以建立映射是这样的:
然后map.get("dog")
返回 “动物”,map.get("chair")
返回 “家具”。
正如其他人已经表明的那样,枚举可以很好地工作(并且速度稍微快一些) - 但要注意的是,它们在编译时是固定的,因此在执行期间不能更改。
准确地说,加上制作类别枚举将会很好 – 2012-04-29 09:57:28
map.get(“chair”)返回“cat”? – 2012-04-29 10:51:07
你可以改变你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"
我认为你应该为你的代码反转eum值和descrption来匹配问题:_Dog(“Animal”),_Chair(“FURNITURE”);类别可能有更多实例。此外,我认为可能更好使用第二枚枚举来表示项目。 – 2012-04-29 10:20:54
@AndreaParodi感谢您的评论。这个'_Dog(“Animal”)听起来不像OP的问题,_Animal是一个枚举而不是一个字符串 – GETah 2012-04-29 10:29:19
当你的映射是固定的,那么你可以考虑使用'enum'。在那里你可以定义你的密钥,每个密钥都可以有你的映射的getter。 – Gaim 2012-04-29 09:23:35