java在映射中检索一个对象_Java - 从HashMap中检索对象

从哈希映射中检索值时遇到问题。散列表的声明如下:

HashMap aTable = new HashMap();然后我将112个值放入地图中,如下所示:

aTable.put(new TRpair(new T(),new Integer()),new Ai());其中Ai是扩展A的4个子类中的任何一个。

然后我继续检查地图中的值,如下所示:

int i = 0;

for (Map.Entry entry : aTable.entrySet()) {

System.out.println(entry.getKey().toString() + " " + entry.getValue().toString());

System.out.println(entry.getKey().equals(new TRpair(new T("!"),new Integer(10))));

i++;

}正如我们所期望的那样,我在最后保留了值112,并且相等测试正好为一个条目打印真实值。

但是,当我这样做

System.out.println(aTable.get(new TRpair(new T("!"), new Integer(10))));尽管上面的代码片段确认了地图上确实存在一个具有此密钥的条目,但仍然会输出null。

如果有帮助,TRpair类会声明如下:

public class TRpair {

private final T t;

private final Integer r;

protected TRpair(Integer r1, T t1) {

terminal = t1;

row = r1;

}

protected TRpair(T t1, Integer r1) {

t = t1;

r = r1;

}

@Override

public boolean equals(Object o) {

TRpair p = (TRpair)o;

return (p.t.equals(t)) && (p.r.equals(r));

}

@Override

public String toString() {

StringBuilder sbldr = new StringBuilder();

sbldr.append("(");

sbldr.append(t.toString());

sbldr.append(",");

sbldr.append(r.toString());

sbldr.append(")");

return sbldr.toString();

}

}每个Ai(扩展A)和T类中的equals()和toString()方法都被类似地覆盖,并且表现得像预期的那样。

为什么从hashmap aTable输出的值为null,之前已经确认相应键的值确实在映射中?

非常感谢,

Froskoy。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值