Java 字符Hashmap的备选方案(即更好的选择)

Java 字符Hashmap的备选方案(即更好的选择),java,map,character,enum-map,Java,Map,Character,Enum Map,正如处理enum时,EnumMap是更好的映射选择一样,是否有更好的映射选择(而不是每个人都使用的通用HashMap)来处理字符 字符有点类似于枚举成员,因为它们有一定数量,所以我想可能会有一种“特殊”的映射给它们 [编辑] “更好”是指“更快”和“更少的内存”我想我理解你的问题。如果有有限数量的字符,您应该能够节省哈希映射的大小 但你可能忽略了国际化的事情?实际上,没有那么多“有限”的字符。(真正的unicode具有可变长度编码等),因此我怀疑是否有一种节约的好方法 如果你使用的是一个特定的语

正如处理
enum
时,
EnumMap
是更好的映射选择一样,是否有更好的映射选择(而不是每个人都使用的通用
HashMap
)来处理字符

字符有点类似于枚举成员,因为它们有一定数量,所以我想可能会有一种“特殊”的映射给它们

[编辑]
“更好”是指“更快”和“更少的内存”

我想我理解你的问题。如果有有限数量的字符,您应该能够节省哈希映射的大小

但你可能忽略了国际化的事情?实际上,没有那么多“有限”的字符。(真正的unicode具有可变长度编码等),因此我怀疑是否有一种节约的好方法


如果你使用的是一个特定的语言,比如26个字符,你可以考虑为这个任务制作自己的枚举(或者更简单,一个数组)。如果你想要一个独立于i18n的答案,我无能为力……

据我所知,没有更好的选择了,但仅仅使用HashMap的缺点是什么?也许你正在做的一个例子将有助于理解“更好的方式”的含义。更好,我指的是更快(并且使用更少的内存)如果将自己限制为ASCII字符,则可以使用数组(如果使用Unicode字符,则可以使用相同的方法,但数组将非常大)。因为字符是可比较的,所以你可以将它们存储在一个树形图中,这比哈希图更节省空间,因为没有加载因子,除了以lg(n)查找/插入/删除为代价。哦,我知道这是一个有限数量的字符,因为这是为了处理我们提出的“人工”语言中的固定单词集。所以字母表是已知和固定的