一道简单的Map题目求解答
package Map;
import java.util.HashMap;
import java.util.Map;
class Dog{
String name;
Dog(String name){this.name = name;}
@Override
public boolean equals(Object arg0) {
// TODO Auto-generated method stub
if( (arg0 instanceof Dog) && (((Dog)arg0).name == name) ){
System.out.println(this.name + " " + ((Dog)arg0).name + " " + "true");
return true;
}
else{
System.out.println(this.name + " " + ((Dog)arg0).name + " " + "false");
return false;
}
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
System.out.println(this.name.length());
return this.name.length();
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "dog is " + this.name;
}
}
public class MapTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<Object, Object> m = new HashMap<Object, Object>();
//add some key/value pairs
Dog d1 = new Dog("clover");
d1.name = "magoli";
m.put(d1, "The value is " + d1);
System.out.println(m);
d1.name = "cagnolia";
System.out.println("4.1 d1: " + d1);
System.out.println("4.1 result--------------: " + m.get(d1)); // #4.1
System.out.println(m);
}
}
上面这段代码的运行结果是
4.1 d1: dog is cagnolia
4.1 result--------------: null
map中的内容是{dog is cagnolia=The value is dog is magoli}
那么如果是map是根据key来返回value的话,那么为什么key已经变化了就不能返回value呢,查找的结果就是null呢
然后我把Dog里面的hashcode改成了return 4;就是一个很没意思的返回数值,运行结果就变成了
4.1 d1: dog is cagnolia
4.1 result--------------: The value is dog is magoli
map中的内容是{dog is cagnolia=The value is dog is magoli},求高手帮忙解答下,非常感谢!!!