我必须设计一个将关键字作为输入并输出类别 ID 的函数。前任:
f('dog') returns _ANIMAL
f('chair') returns _FURNITURE
我已经有了映射,每次都可以遍历标签数组,但我觉得这不是最好的解决方案。
Java 库中是否有针对此特定任务的特殊数据结构(我正在考虑三元搜索树)?我应该只使用 HashMap (或者 Set (因为类别很少))吗?
PS 这个映射是固定的,一旦构建完成,我不需要添加或删除元素。
我必须设计一个将关键字作为输入并输出类别 ID 的函数。前任:
f('dog') returns _ANIMAL
f('chair') returns _FURNITURE
我已经有了映射,每次都可以遍历标签数组,但我觉得这不是最好的解决方案。
Java 库中是否有针对此特定任务的特殊数据结构(我正在考虑三元搜索树)?我应该只使用 HashMap (或者 Set (因为类别很少))吗?
PS 这个映射是固定的,一旦构建完成,我不需要添加或删除元素。
如果我对您的理解正确,那么 HashMap 听起来正是您想要的。您不希望每次都遍历整个数组,因为有许多函数调用和/或大型数组,您的程序最终会运行缓慢。使用 HashMap,从键(您的关键字)中提取值(您的类别)或多或少会在恒定时间内立即发生。
您可以像这样构建地图:
HashMap map = new HashMap();
map.put("dog", "animal");
map.put("chair", "furniture");
map.put("cat", "animal");
然后map.get("dog")
返回“动物”,map.get("chair")
返回“家具”。
正如其他人所指出的那样,枚举也可以很好地工作(并且稍微快一点)——但需要注意的是它们在编译时是固定的,因此在执行期间不能更改。
您可以更改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"