java - Java中的映射数据结构

标签 java string data-structures mapping hashmap

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

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

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

Java 库中是否有用于此特定任务的特殊数据结构(我想到的是三元搜索树)?我应该只使用 HashMap(或者 Set(因为类别很少))吗?

附言此映射是固定的,构建后我不需要添加或删除元素。

最佳答案

如果我理解正确,那么 HashMap 听起来正是您想要的。您不希望每次都遍历整个数组,因为有许多函数调用和/或大型数组,您的程序最终会运行缓慢。使用 HashMap,从一个键(您的关键字)中提取一个值(您的类别)或多或少会在恒定时间内立即发生。

您可以像这样构建 map :

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

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

正如其他人所指出的,枚举在这方面也能很好地工作(并且稍微快一点)——需要注意的是它们在编译时是固定的,因此在执行期间不能更改。

关于java - Java中的映射数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10370897/

相关文章:

Java base64编码,解码产生不同的结果

c# - 特殊类型查询的数据结构

java - 给定一个整数列表,其中一些可能是负数,提取总和为 2 个最大数字的对

Java Scanner 类因多次使用而失败

java - GZIPInputStream 最后填充零?

windows - 如何使用批处理文件分割字符串?

algorithm - 给定一个字符串,只需要一次扫描就可以找到它的第一个非重复字符

java - 使用 GWT 获取/j_spring_security_check 的 HTTP 状态 404

java - @Valid 带有 spring 注解

c# - 检查斜杠的字符串