相关疑难解决方法(0)

Java HashMap containsKey为现有对象返回false

我有一个用于存储对象的HashMap:

    private Map<T, U> fields = Collections.synchronizedMap(new HashMap<T, U>());
Run Code Online (Sandbox Code Playgroud)

但是,当试图检查密钥的存在时,containsKey方法返回false.
equalshashCode方法已实现,但找不到密钥.
调试一段代码时:

    return fields.containsKey(bean) && fields.get(bean).isChecked();
Run Code Online (Sandbox Code Playgroud)

我有:

   bean.hashCode() = 1979946475 
   fields.keySet().iterator().next().hashCode() = 1979946475    
   bean.equals(fields.keySet().iterator().next())= true 
   fields.keySet().iterator().next().equals(bean) = true
Run Code Online (Sandbox Code Playgroud)

fields.containsKey(bean) = false
Run Code Online (Sandbox Code Playgroud)

什么可能导致这种奇怪的行为?

public class Address extends DtoImpl<Long, Long> implements Serializable{

   <fields>
   <getters and setters>

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + StringUtils.trimToEmpty(street).hashCode();
    result = prime * result + StringUtils.trimToEmpty(town).hashCode(); …
Run Code Online (Sandbox Code Playgroud)

java hashmap containskey

30
推荐指数
3
解决办法
4万
查看次数

标签 统计

containskey ×1

hashmap ×1

java ×1