一道简单的Map题目求解答 一个非常好的问题,关系到map的put和get方法,put会调用equals判断对象是否存在,这和你说的这个没关系,你的问题主要关乎get方法,get会调用hashcode方法,根据得到的值去查找对象。所以,当你hashcode方法返回return this.name.length();时,你把magoli改为cagnolia,两者长度不一样,所以找不到了,如果改为cagnol,即长度一致就可以找到了,return 4道理相同 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你用的是HashMap,这个map在存储数据的时候是根据key的hashCode来决定存储在哪个数组里。如果key的hashCode变化了的话就会导致HashMap在根据key的hashCode查找数组时找到的不是正确的数组,所以也就不能定位value了。而你的Dog类的hashCode是根据name.length来的,那么当你的name长度变化后,就不能在HashMap中找到对应的value了。 涉及到hashCode()方法.最好设置为如果有可能相等则hashcode相同不变的. 同学,你用的是hashmap实现类 其实 hashmap底层就是用的哈希表作为数据结构的而 <Key> 的hashcode 是用来在哈希表中寻址的 因为哈希表必然会存在哈希冲突的问题,所以在哈希冲突的时候使用<Key>的equals方法来判断是否是相同的<Key> 而你的例子里equals 重写的有问题 不妨把equals 内改成 returned this.name.equals(arg0.toString());试试 查看hashmap的实现源码答案就在那里 java问题 急急急.......高精度减法出错java.lang.ArrayIndexOutOfBoundsException 关于object建立的对象 Socket异步通讯时分页读取的问题 java权限的问题 新手提问拉,希望大虾门给些指点。。。。。。。。。。。。。。。。。。。。。。。 两个Panel如何交互数据????????????????????????????? 硬盘小问题,先谢过了 Internet新技术,欲制定国际标准,寻找志同道合的朋友! 实时要求很高的文本读写(分不够再加,帮忙顶一下) 【java小白】一个小问题 JAVA String 编码问题
而你的Dog类的hashCode是根据name.length来的,那么当你的name长度变化后,就不能在HashMap中找到对应的value了。
答案就在那里