OptaPlanner HashCode违规:tabu(实体)的hashCode可能已更改,因为它已插入禁忌Map或Set

时间:2015-06-05 17:21:34

标签: optaplanner

我收到了HashCode违规行为。解算器工作约一分钟,然后导致此错误。该实体是车辆。使用默认构造函数。没有自定义动作。所有评分规则都是流口水。

任何想法都表示赞赏。

($string =~ m/[\w\s]+,#[0-9A-F]{6}/g)

1 个答案:

答案 0 :(得分:1)

知道什么类的toString()会返回" Vehicle> 10"?该类的hashCode()在使用Map中的键时发生了变化。

有两种解决方案:

  • 使用稳定的hashCode(),例如基于数据库密钥。默认的Object.hashCode()也很好(内存ID)。基于永不改变的业务密钥,例如用户名也可以。当然,hashCode()的任何更改也必须反映在equals()中。

  • 不要使用Tabu搜索,请使用延迟接受。