您并没有覆盖
Object.equals- 由于参数类型,您正在 重载 它。您的 诊断 代码将调用您的重载,但映射代码则不会(因为它不知道)。
您需要一个签名为
public boolean equals(Object other)
如果您使用
@Override注释,则如果无法正确覆盖某些内容,则会收到错误消息。
您需要检查是否
other是
RouteHeadSignPairfirst,然后是cast
的实例。如果您将
RouteHeadSignPair班级定为最终班级,则无需担心班级是否完全相同,等等。
请注意,您的哈希码将不必要的碰撞,顺便说一句-如果你同时使用
route与
该
headSign哈希来生成散列码,它可以帮助你的地图查找更有效率。(如果有多个实例具有相同的路线但头部符号不同,则在查找键时地图不必检查所有实例是否相等时很有用。)



