课程
/后端开发
/Java
/Java入门第三季
其实我还是没看懂为什么要重写haseCode和equals方法,这岂不是说明原生set的contains方法是无效的,不能用的,只能重写以才能用?
2016-10-03
源自:Java入门第三季 6-2
正在回答
这个你可以这样理解 equals方法是父类里面定义的 我们所写的子类都会继承他,但是父类里面的equals并不知道你子类中的equals具体怎么判断的,就像前面我们学的继承一样,我们定义了一个动物类 ,动物类里面有say(){System.out.println("动物会叫");}这个方法,他只是说出了一个动物会叫的事实,但是具体继承他的动物,比如狗继承了他 狗的方法 应该重写他say(){System.out.println(狗汪汪叫);} 而不是输出从父类中继承过来的say方法输出,动物会叫,这样不合理,我们重写是为了更适合现在的需求,希望对你有帮助。
不是,源生的默认比较的是两个对象的地址,也就是相当于===,判断是不是同一个对象,改进为如果两个对象的value相等,他们的比较就返回true,也就相等。
举报
Java中你必须懂得常用技能,不容错过的精彩,快来加入吧
1 回答测试Set的contains方法
3 回答关于list contains方法
1 回答List中contains()方法和indexOf()方法的区别?
5 回答为何Set中的contains 方法运用的是hashCode+equals的模式 而List里面是equals的 模式?
1 回答iterator与set方法