【发布时间】:2012-03-16 19:04:02
【问题描述】:
我有一个 TreeMap,其中 RobotKey 是一个由字符串字段域和长字段时间戳组成的类。 RobotKey 的实现如下:
@Override
public boolean equals(Object obj) {
if (this.domain.equals(((RobotKey) obj).getDomain()))
return true;
return false;
}
并且treemap是按照如下compareTo函数排序的:
@Override
public int compareTo(RobotKey arg0) {
if (this.lastAccessed < arg0.lastAccessed)
return -1;
else if (this.domain.equals(arg0.getDomain()))
return 0;
else
return 1;
}
所以基本上,地图是通过域名访问的,并且是根据时间戳排序的。
我做了 treemap.get(RobotKey e) ,其中 e 与 treemap 中的现有条目具有相同的域名,但时间戳不同。这应该返回正确的 RobotValue,因为 Map 操作是使用 equals 完成的。但它反而返回我 null 表示未找到 RobotKey。知道为什么会这样吗?我做错了什么,我该如何解决?谢谢!
【问题讨论】: