class Expression{
private final String expression; //can be 00* or 01* or 0101*
public int hashCode(){
//what should I put here
//tried to use String hashCode but not useful
}
public boolean equals(Object obj){
//Logic for testing of equality
//Check if the obj is String check if expression matches
}
}
//This is how map is initialized
map.put("00*",someObject);
map,put("0101*", someOtherObject);
为什么 String hashCode 实现没有用?
因为String
在Expression
课堂上是00*
,而String
我试图查找的将是00112233
。所以hashCode()
那些字符串不会相同。
客户端代码尝试从HashMap
使用String
键中查找
map.get("0011"); //should get someObject as `0011` matches expression `00*`
有没有办法做到这一点?
我知道它hashCode()
应该包含不可变的值以及关于hashCode()
和equals()
合同的值。
但我怀疑是否有任何方法可以实现这一目标。