啊梨真神奇
2016-01-24 20:45
本来HashSet下的contains()方法是比较student.courses下的元素的哈希码与course2的哈希码是否一样,这当然是不一样的所以返回的是false。而重写之后,是比较student.courses下的元素的name属性的哈希码与course2.name的哈希码是否一样,它们是一样的,所以返回的是true。
这样理解对么?一直都一知半解的。。。
你理解了吗 可以给我说说吗 我不理解对于List与Set而言,都是遍历一边,分别与courses2.name进行equals
List不需要重写 但是Set就需要重写?
这是我理解的hashcode与equals (hash比较一个域,equals比较域中一个元素.equals为true,hash一定为true;
equals为false,hash不一定为false)
在此 contains先比较hash,后比较equals( hash为true,equals不一定为true;hash为false,equals一定为false)
这是我理解的不知道对不对
java自带的hashCode()和equals()方法定义比较简单,很多时候不适用我们使用的场合,这两个方法在哪里重写都一样,只要是在这个包下的。你使用contains()方法时候他需要调用者两个方法,他会优先使用重写的hashCode()和equals()方法
这样理解对的呢
Java入门第三季
409792 学习 · 4340 问题
相似问题