使用HashMap进行对象查找

mar*_*ock 1 java dictionary hashmap

我正在尝试使用Java HashMap<String, object>作为对象字典,因此通过其名称(string)查找对象.所有的名字都是独一无二的; 但是,通常非常相似(例如:"delay1","delay2").HashMap.get(string)找到具有该名称或唯一项目的保证是否只是寻找具有相同散列的项目.

代码运行的方式,看起来像查找不一致.

如果HashMap<String, object>不能满足我的需求,那么Java中的某些东西是否与C#字典类似?

das*_*ght 5

是的,HashMap保证找到完全匹配,而不仅仅是具有相同哈希码的匹配.

基于散列的容器通过调用equals()查找键和来自其中一个散列桶的候选来完成它,以确保存在实际匹配.这就是必须始终覆盖这两者equalshashCode方法的原因,如文档中所述:

请注意,通常需要在重写hashCode此[ equals] 方法时覆盖该方法,以便维护该hashCode方法的常规协定,该协定声明相等的对象必须具有相等的哈希代码.